regarding building from src on debian

Developers
jAs0n
2008-07-05
2013-05-28
  • jAs0n
    jAs0n
    2008-07-05

    Hello,

    I'm trying to build structure synth on debian unstable with Qt4 already properly installed since I have compiled other programs successfully.

    The only packages I needed extra on Debian were:
    libqt4-opengl-dev
    libqt4-opengl

    At least that is what I thought, Unfortunatly I am unable to get it build since the generated makefile cannot locate the qt4glide libs. Which are located properly in /usr/lib/libQtOpenGL.so etc... they are all there..

    Does anyone have any ideas what I'm missing here ?

    In my search for sulotions I came across this bug report, [[inserted url below]], although it is from a ktoon build.
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482211

    Anyway, here's the build log from my system and where it fails. Maybe that will help. Thankx so much..

    Cheers..

    [00:15][aedon]:~/src/structuresynth/Structure Synth Source Code$ qmake-qt4 -project
    [00:15][aedon]:~/src/structuresynth/Structure Synth Source Code$ qmake-qt4        
    [00:15][aedon]:~/src/structuresynth/Structure Synth Source Code$ make
    g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -ISyntopiaCore/GLEngine -ISyntopiaCore/Math -ISyntopiaCore/Misc -ISyntopiaCore/Logging -ISyntopiaCore/Exceptions -IStructureSynth/Parser -IStructureSynth/Model -IStructureSynth/Model/Rendering -I. -I. -o Main.o Main.cpp
    In file included from MainWindow.h:8,
                     from Main.cpp:3:
    SyntopiaCore/GLEngine/EngineWidget.h:4:21: error: QGLWidget: No such file or directory
    In file included from SyntopiaCore/GLEngine/EngineWidget.h:11,
                     from MainWindow.h:8,
                     from Main.cpp:3:
    SyntopiaCore/GLEngine/Object3D.h:5:20: error: QtOpenGL: No such file or directory
    In file included from SyntopiaCore/GLEngine/EngineWidget.h:11,
                     from MainWindow.h:8,
                     from Main.cpp:3:
    SyntopiaCore/GLEngine/Object3D.h:18: error: expected identifier before '&' token
    SyntopiaCore/GLEngine/Object3D.h:18: error: ISO C++ forbids declaration of 'GLfloat' with no type
    SyntopiaCore/GLEngine/Object3D.h:18: error: 'GLfloat' declared as function returning an array
    SyntopiaCore/GLEngine/Object3D.h:18: error: 'const' and 'volatile' function specifiers on 'getColor' invalid in parameter declaration
    SyntopiaCore/GLEngine/Object3D.h:34: error: 'GLfloat' does not name a type
    SyntopiaCore/GLEngine/Object3D.h: In member function 'int SyntopiaCore::GLEngine::Object3D::GLfloat(int& (*)())':
    SyntopiaCore/GLEngine/Object3D.h:18: error: 'primaryColor' was not declared in this scope
    SyntopiaCore/GLEngine/Object3D.h: At global scope:
    SyntopiaCore/GLEngine/Object3D.h:18: warning: unused parameter 'getColor'
    SyntopiaCore/GLEngine/Object3D.h: In member function 'void SyntopiaCore::GLEngine::Object3D::vertex(SyntopiaCore::Math::Vector3f) const':
    SyntopiaCore/GLEngine/Object3D.h:25: error: 'glVertex3f' was not declared in this scope
    SyntopiaCore/GLEngine/Object3D.h: In member function 'void SyntopiaCore::GLEngine::Object3D::normal(SyntopiaCore::Math::Vector3f) const':
    SyntopiaCore/GLEngine/Object3D.h:26: error: 'glNormal3f' was not declared in this scope
    In file included from MainWindow.h:8,
                     from Main.cpp:3:
    SyntopiaCore/GLEngine/EngineWidget.h: At global scope:
    SyntopiaCore/GLEngine/EngineWidget.h:36: error: expected class-name before '{' token
    In file included from Main.cpp:3:
    MainWindow.h:91: error: ISO C++ forbids declaration of 'QSpinBox' with no type
    MainWindow.h:91: error: expected ';' before '*' token
    MainWindow.h:92: error: ISO C++ forbids declaration of 'QCheckBox' with no type
    MainWindow.h:92: error: expected ';' before '*' token
    Main.cpp: In function 'int main(int, char**)':
    Main.cpp:10: error: 'QDir' was not declared in this scope
    Main.cpp:11: error: 'QSplashScreen' was not declared in this scope
    Main.cpp:11: error: expected `;' before 'splash'
    Main.cpp:12: error: 'splash' was not declared in this scope
    make: *** [Main.o] Error 1
    [00:15][aedon]:~/structuresynth/Structure Synth Source Code$

     
    • Hi, I just created a VM-Ware image with a fresh installation of Ubuntu 8.04 and Qt 4.4.0 and I got the exact same error message as you!

      It seems some dependencies are missing, but I was able to get it working by adding the following lines at the end of my .pro file:
      CONFIG += opengl
      QT += opengl xml

      My guess is that this will work on Debian too (if you have Qt compiled with OpenGL support). I don't know why this is suddenly necessary, but I will investigate it some more, and update the build process on the homepage.

      Best regards, Mikael.

       
    • jAs0n
      jAs0n
      2008-07-07

      W00t.. Thankx so much for your reply.

      It got further compiling but it stopped complaining about a missing include.

      So I fixed that in the file:

      StructureSynth/Model/RuleSet.cpp

      by adding the include:

      #include <typeinfo>

      And... drumrolll - it compiles and it works now on debian [unstable]. I was thinking of sending a patch, but since that one line is so trivial and its already late I will leave that for now if you don't mind. I will check in tommorow evening and see if its needed. Tommorrow evening I'm gonna try and work with the program itself and have a better look at all the capabilities.

      Thanks again for your reply, it made the difference! Long live OpenSource......

      Cheers.

      Sjka.

       
      • Glad to hear you got it working!

        I've added the 'typeinfo' include to the SVN repository (and fixed a few other compiler warnings on GCC as well), so hopefully Structure Synth should compile without any trouble on Debian now. The build instructions on the Structure Synth homepage have been updated as well.

        Regards, Mikael.

         
  • Hi there,
    I just discovered this highly interesting project via http://www.openarchitect.org
    I tried to compile the latest svn version on debian, I noticed a small typo, in SyntopiaCore/GLEngine/RayTracer.cpp, line 5 should be MiniParser.h instead of Miniparser.h, right?

    After that I get the following error:

    g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_SCRIPT_LIB -DQT_XML_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtScript -I/usr/include/qt4 -I. -IStructureSynth/GUI -ISyntopiaCore/GLEngine -ISyntopiaCore/Math -ISyntopiaCore/Misc -IStructureSynth/Parser -ISyntopiaCore/Exceptions -IStructureSynth/Model/Rendering -IStructureSynth/Model -IThirdPartyCode/MersenneTwister -ISyntopiaCore/Logging -IStructureSynth/JavaScriptSupport -I/usr/X11R6/include -I. -o RayTracer.o SyntopiaCore/GLEngine/RayTracer.cpp
    In file included from ./SyntopiaCore/Math/Random.h:8,
                     from SyntopiaCore/GLEngine/RayTracer.h:8,
                     from SyntopiaCore/GLEngine/RayTracer.cpp:1:
    ./SyntopiaCore/Math/../../ThirdPartyCode/MersenneTwister/MersenneTwister.h: In member function ‘void MTRand::seed(long unsigned int*, long unsigned int)’:
    ./SyntopiaCore/Math/../../ThirdPartyCode/MersenneTwister/MersenneTwister.h:238: warning: enumeral and non-enumeral type in conditional expression
    SyntopiaCore/GLEngine/RayTracer.cpp: At global scope:
    SyntopiaCore/GLEngine/RayTracer.cpp:24: error: extra qualification ‘SyntopiaCore::GLEngine::VoxelStepper::’ on member ‘VoxelStepper’
    SyntopiaCore/GLEngine/RayTracer.cpp:31: error: extra qualification ‘SyntopiaCore::GLEngine::VoxelStepper::’ on member ‘VoxelStepper’
    SyntopiaCore/GLEngine/RayTracer.cpp:33: error: extra qualification ‘SyntopiaCore::GLEngine::VoxelStepper::’ on member ‘registerObject’
    SyntopiaCore/GLEngine/RayTracer.cpp:77: error: extra qualification ‘SyntopiaCore::GLEngine::VoxelStepper::’ on member ‘setupRay’
    SyntopiaCore/GLEngine/RayTracer.cpp:186: error: extra qualification ‘SyntopiaCore::GLEngine::VoxelStepper::’ on member ‘advance’
    SyntopiaCore/GLEngine/RayTracer.cpp: In constructor ‘SyntopiaCore::GLEngine::VoxelStepper::VoxelStepper(SyntopiaCore::Math::Vector3f, SyntopiaCore::Math::Vector3f, int)’:
    SyntopiaCore/GLEngine/RayTracer.cpp:239: warning: ‘SyntopiaCore::GLEngine::VoxelStepper::maxPos’ will be initialized after
    SyntopiaCore/GLEngine/RayTracer.cpp:234: warning:   ‘const SyntopiaCore::Math::Vector3f SyntopiaCore::GLEngine::VoxelStepper::size’
    SyntopiaCore/GLEngine/RayTracer.cpp:24: warning:   when initialized here
    SyntopiaCore/GLEngine/RayTracer.cpp:28: warning: comparison between signed and unsigned integer expressions
    SyntopiaCore/GLEngine/RayTracer.cpp: In member function ‘QImage SyntopiaCore::GLEngine::RayTracer::calculateImage(int, int)’:
    SyntopiaCore/GLEngine/RayTracer.cpp:539: warning: comparison between signed and unsigned integer expressions
    SyntopiaCore/GLEngine/RayTracer.cpp:545: warning: comparison between signed and unsigned integer expressions
    SyntopiaCore/GLEngine/RayTracer.cpp:635: warning: unused variable ‘fy’
    SyntopiaCore/GLEngine/RayTracer.cpp:605: warning: unused variable ‘fx’
    SyntopiaCore/GLEngine/RayTracer.cpp:698: warning: comparison between signed and unsigned integer expressions
    SyntopiaCore/GLEngine/RayTracer.cpp:701: warning: comparison between signed and unsigned integer expressions
    SyntopiaCore/GLEngine/RayTracer.cpp:740: warning: comparison between signed and unsigned integer expressions
    SyntopiaCore/GLEngine/RayTracer.cpp:758: warning: comparison between signed and unsigned integer expressions
    SyntopiaCore/GLEngine/RayTracer.cpp:762: warning: comparison between signed and unsigned integer expressions
    make: ***  Error 1

    but I'm afraid my c++ knowledge is too weak to solve this… Looks like the extra qualification error has to do with the g++ version used, though. Any idea?
    Thanks
    Yorik

     
  • Hi,

    I always develop on Windows (with Visual Studio C++), so I don't check the source on other platforms until I'm ready to make builds. So the latest SVN version does not always compile on Linux.

    The safest way to build Structure Synth is to grab the source from one of the released packages - they should build on all platforms.

    I've corrected the errors, you refer to, so you could try again - I cannot guarantee that there are no more errors, though.

    Best regards, Mikael.

    GCC is right, btw, inline member functions should not have the extra classifier. I guess VC++ is just more forgiving.

     
  • Hi Mikael,
    Okay, it compiles fine now, thanks a lot!
    What a cool application! Now I have to play a bit with it…
    If I manage to produce something cool I'll post it around here.
    Cheers & thanks for the great work (and the totally interesting syntopia blog…)
    Yorik