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 ?
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$
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
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