[ 11%] Building CXX object kicker/libkicker/CMakeFiles/kickermain-shared.dir/panner.cpp.o [ 11%] Building CXX object kicker/libkicker/CMakeFiles/kickermain-shared.dir/kickerSettings.cpp.o In file included from /usr/include/QtCore/QFile:1:0, from /home/david/arch/pkg/tbld/kdebase/src/kicker/libkicker/kickerSettings.cpp:7: /usr/include/QtCore/qfile.h:53:1: error: ‘QT_BEGIN_HEADER’ does not name a type /usr/include/QtCore/qfile.h:62:27: error: expected initializer before ‘:’ token make[2]: *** [kicker/libkicker/CMakeFiles/kickermain-shared.dir/kickerSettings.cpp.o] Error 1 make[1]: *** [kicker/libkicker/CMakeFiles/kickermain-shared.dir/all] Error 2 make: *** [all] Error 2 Aborting...
I have 3 x86_64 boxes and 4 i686 boxes I'm building on. Some with kde4, some without. With kde4/Qt4 installed, the kdebase build dies as above.
On the boxes without QT4, the build progresses to 30% before the iccconfig.cpp build error.
I'm rather stumped.I would like to find a way to tell the kdebase build to NOT EVER-EVER look in /usr/include/QtCore. But so far I haven't found a way to do it. It is clear from the error above, that the qt4 qfile.h is causing the problem. The correct qfile.h is in /opt/qt/include, but for some reason isn't being used:
22:24 providence:~/arch/pkg/tbld/kdebase/kicker/libkicker> pmq -o /usr/include/QtCore/qfile.h /usr/include/QtCore/qfile.h is owned by qt 4.7.1-3 22:24 providence:~/arch/pkg/tbld/kdebase/kicker/libkicker> find /opt/qt/ -name qfile.h /opt/qt/include/qfile.h
I try limiting that problem with PATH and kde environment tweaks:
build() { msg "Setting PATH, CMAKE and Trinity Environment variables" [[ ${PATH%%:*} =~ /opt/qt/bin ]] || export PATH=/opt/qt/bin:$PATH export CMAKE_PREFIX_PATH=/opt/qt export CMAKE_INCLUDE_PATH=/opt/qt/include:/opt/qt/include/tqt export KDEDIR=/opt/trinity export KDEDIRS=/opt/trinity:/usr export PKG_CONFIG_PATH=:/opt/trinity/lib/pkgconfig:/opt/trinity/lib/pkgconfig:/opt/qt/lib/pkgconfig export XDG_CONFIG_DIRS=/etc/xdg:/opt/trinity/etc/xdg:/opt/trinity/etc/xdg export XDG_DATA_DIRS=/usr/share/:/usr/local/share/:/opt/trinity/share:/opt/trinity/share
trinity_prefix="/opt/trinity"
cd ${srcdir} cmake ../ \ -DCMAKE_INSTALL_PREFIX=${trinity_prefix} \ -DWITH_QT3=ON \ -DBUILD_ALL=ON \ -DCMAKE_SKIP_RPATH=ON make || return 1 }
But even with these variables, the build grabs QtCore regardless. Are there any other cmake variables that I can use that would make sense in this situation?
Any help would be greatly appreciated. Also, let me know if there and statements or variables set above that I need to remove. Thanks.
On Friday 04 February 2011 06:29:21 David C. Rankin wrote: [...]
trinity_prefix="/opt/trinity"
cd ${srcdir} cmake ../ \ -DCMAKE_INSTALL_PREFIX=${trinity_prefix} \ -DWITH_QT3=ON \ -DBUILD_ALL=ON \ -DCMAKE_SKIP_RPATH=ON make || return 1 }
But even with these variables, the build grabs QtCore regardless. Are there any other cmake variables that I can use that would make sense in this situation?
Try to add "-DQTDIR=/opt/qt" to cmake arguments.
[...]
On 02/04/2011 02:47 AM, Serghei Amelian wrote:
On Friday 04 February 2011 06:29:21 David C. Rankin wrote: [...]
trinity_prefix="/opt/trinity"
cd ${srcdir} cmake ../ \ -DCMAKE_INSTALL_PREFIX=${trinity_prefix} \ -DWITH_QT3=ON \ -DBUILD_ALL=ON \ -DCMAKE_SKIP_RPATH=ON make || return 1 }
But even with these variables, the build grabs QtCore regardless. Are there any other cmake variables that I can use that would make sense in this situation?
Try to add "-DQTDIR=/opt/qt" to cmake arguments.
[...]
Thank you Serghei,
I'll give it a try and report back. I have another question:
"Where can I get a list of all the cmake arguments?"
I have google cmake options until I'm blue in the face and all I get are general references and not any all inclusive list. Can I run some cmake command that will list what each package supports? Thanks again :)
On Friday 04 February 2011 20:21:29 David C. Rankin wrote: [...]
"Where can I get a list of all the cmake arguments?"
I have google cmake options until I'm blue in the face and all I get are general references and not any all inclusive list. Can I run some cmake command that will list what each package supports? Thanks again :)
Run ccmake or open main CMakeLists.txt with a text editor.
On 02/03/2011 10:29 PM, David C. Rankin wrote:
<snip>
But even with these variables, the build grabs QtCore regardless.
Serghei,
Looking closer, the kdebase admin/acinclude.m4.in may be part of the problem. It seems to check for kde4 first and then sets QTDIR to qt4 if found before checking for kde3:
12:54 archangel:/dat_e/david/bld/trinity/kdebase> grep -r QTDIR *
admin/acinclude.m4.in:dnl in $QTDIR/bin, and some more usual places admin/acinclude.m4.in: kde_qt_dirs="$QTDIR /usr/lib/qt4 /usr/lib/qt /usr/share/qt4" admin/acinclude.m4.in: kde_qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt /usr/share/qt3 /usr/lib${kdelibsuff}/qt-3.3" admin/acinclude.m4.in: kde_qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt" admin/acinclude.m4.in: kde_qt_dirs="$QTDIR /usr/lib/qt" admin/acinclude.m4.in:AC_FIND_FILE(qsql.html, [ $kde_qtdir/doc/html $QTDIR/doc/html /usr/share/doc/packages/qt3/html /usr/lib/qt/doc /usr/lib/qt3/doc /usr/lib/qt3/doc/html /usr/doc/qt3/html /usr/doc/qt3 /usr/share/doc/qt3-doc /usr/share/qt3/doc/html /usr/X11R6/share/doc/qt/html ], QTDOCDIR)
The actual tests are:
if test $kde_qtver = 4; then kde_qt_dirs="$QTDIR /usr/lib/qt4 /usr/lib/qt /usr/share/qt4" fi if test $kde_qtver = 3; then kde_qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt /usr/share/qt3 /usr/lib${kdelibsuff}/qt-3.3" if test -z "$PKG_CONFIG"; then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) fi if test "$PKG_CONFIG" != "no" ; then if $PKG_CONFIG --exists qt-mt ; then kde_qt_dirs="$kde_qt_dirs `$PKG_CONFIG --variable=prefix qt-mt`" fi fi fi
Could this be one of the issues?
Even with -DQTDIR=/opt/qt, the build on boxes with kde4 installed still fails for the same reason:
[ 11%] Building CXX object kicker/libkicker/CMakeFiles/kickermain-shared.dir/kickerSettings.cpp.o cd /dat_e/david/bld/trinity/kdebase/src/kicker/libkicker && /usr/bin/c++ -Dkickermain_shared_EXPORTS -DHAVE_CONFIG_H -DUSE_QT3 -DQT_NO_ASCII_CAST -DQT_CLEAN_NAMESPACE -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -DQT_THREAD_SUPPORT -D_REENTRANT -march=x86-64 -mtune=generic -O2 -pipe -include tqt.h -fPIC -I/dat_e/david/bld/trinity/kdebase/src/kicker/libkicker -I/opt/trinity/include -I/opt/qt/include -I/opt/qt/include/tqt -o CMakeFiles/kickermain-shared.dir/kickerSettings.cpp.o -c /dat_e/david/bld/trinity/kdebase/src/kicker/libkicker/kickerSettings.cpp In file included from /usr/include/QtCore/QFile:1:0, from /dat_e/david/bld/trinity/kdebase/src/kicker/libkicker/kickerSettings.cpp:7: /usr/include/QtCore/qfile.h:53:1: error: ‘QT_BEGIN_HEADER’ does not name a type /usr/include/QtCore/qfile.h:62:27: error: expected initializer before ‘:’ token make[2]: *** [kicker/libkicker/CMakeFiles/kickermain-shared.dir/kickerSettings.cpp.o] Error 1 make[2]: Leaving directory `/dat_e/david/bld/trinity/kdebase/src' make[1]: *** [kicker/libkicker/CMakeFiles/kickermain-shared.dir/all] Error 2 make[1]: Leaving directory `/dat_e/david/bld/trinity/kdebase/src' make: *** [all] Error 2 Aborting...
On Friday 04 February 2011 21:14:19 David C. Rankin wrote:
On 02/03/2011 10:29 PM, David C. Rankin wrote:
<snip>
But even with these variables, the build grabs QtCore regardless.
Serghei,
Looking closer, the kdebase admin/acinclude.m4.in may be part of the problem. It seems to check for kde4 first and then sets QTDIR to qt4 if found before checking for kde3:
acinclude.m4.in is not related in any way with cmake
[ 11%] Building CXX object kicker/libkicker/CMakeFiles/kickermain-shared.dir/kickerSettings.cpp.o cd /dat_e/david/bld/trinity/kdebase/src/kicker/libkicker && /usr/bin/c++ -Dkickermain_shared_EXPORTS -DHAVE_CONFIG_H -DUSE_QT3 -DQT_NO_ASCII_CAST -DQT_CLEAN_NAMESPACE -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -DQT_THREAD_SUPPORT -D_REENTRANT -march=x86-64 -mtune=generic -O2 -pipe
Ensure that kickerSettings.cpp is not generated by Qt4 uic. To avoid these stange problems, I suggest to use a virtual machine or chroot with clean setup.