[CMake] cmake cvs breaks kde4 builds

Andreas Pakulat apaku at gmx.de
Sat Jan 26 14:47:43 EST 2008


Hi,

not sure wether this is really a fault in cmake, or just some changed
behaviour which needs changes in kdelibs cmake code.

Anyway, the latest cvs version from cmake (update 2 hours ago) produces
the following entries in KDELibsDependencies.cmake. This file is
generated using the export_library_dependecies() command:

SET(kdecore_LIB_DEPENDS "general;/home/andreas/qt-copy/lib/libQtCore.so;general;-lpthread;general;/home/andreas/qt-copy/lib/libQtNetwork.so;general;/home/andreas/qt-copy/lib/libQtDBus.so;general;/home/andreas/qt-copy/lib/libQtXml.so;general;libz.so;general;libbz2.so;general;resolv;")
SET(kdeui_LIB_DEPENDS "general;/home/andreas/qt-copy/lib/libQtSvg.so;general;/home/andreas/qt-copy/lib/libQtCore.so;general;-lpthread;general;kdecore;general;-lSM;general;libICE.so;general;libX11.so;general;libXext.so;general;libXft.so;general;libXau.so;general;libXdmcp.so;general;libXpm.so;general;/home/andreas/qt-copy/lib/libQtGui.so;general;/home/andreas/qt-copy/lib/libQtXml.so;general;libXtst.so;general;libXcursor.so;general;libXfixes.so;")
SET(kio_LIB_DEPENDS "general;/home/andreas/qt-copy/lib/libQtCore.so;general;-lpthread;general;kdecore;general;kdeui;general;libz.so;general;/home/andreas/kde4/lib/libstreamanalyzer.so;general;/home/andreas/kde4/lib/libstreams.so;general;/home/andreas/qt-copy/lib/libQtCore.so;general;-lpthread;general;kdecore;general;solid;general;libfam.so;general;libacl.so;general;libattr.so;general;libXrender.so;")
...

The problem with this is that those lines are literally taken and given
to target_link_libraries. Which fails as those lines contain an entry
"general". The linker line then has -lgeneral, but at least in the
debian repository there's no such file.

Also I noticed that the linker line doesn't contain an option that gives
gcc the kde4 library dir to search for kde libs. This is another thing
which broke things for me here, i.e. ld complains that -lsolid cannot be
found (as you can see below there's a solid entry in the kio-line).

The linker call is:
/usr/lib/ccache/c++  -fPIC -pipe -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -fno-check-new -fno-common -Woverloaded-virtual -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g -Wl,--enable-new-dtags -Wl,--fatal-warnings -Wl,--no-undefined -lc  -shared -Wl,-soname,libkresources.so.4 -o ../lib/libkresources.so.4.1.0 "CMakeFiles/kresources.dir/kresources_automoc.cpp.o" "CMakeFiles/kresources.dir/resource.cpp.o" "CMakeFiles/kresources.dir/factory.cpp.o" "CMakeFiles/kresources.dir/managerimpl.cpp.o" "CMakeFiles/kresources.dir/configwidget.cpp.o" "CMakeFiles/kresources.dir/configdialog.cpp.o" "CMakeFiles/kresources.dir/selectdialog.cpp.o" "CMakeFiles/kresources.dir/configpage.cpp.o" "CMakeFiles/kresources.dir/idmapper.cpp.o" "CMakeFiles/kresources.dir/kresourcesmanageradaptor.cpp.o" /home/andreas/qt-copy/lib/libQtCore.so -lpthread -lkdecore -lkdeui -lz /home/andreas/kde4/lib/libstreamanalyzer.so /home/andreas/kde4/lib/libstreams.so /home/andreas/qt-copy/lib/libQtCore.so -lpthread -lkdecore -lsolid -lfam -lacl -lattr -lXrender /home/andreas/kde4/lib/libkio.so /home/andreas/qt-copy/lib/libQtSvg.so -lSM -lICE -lX11 -lXext -lXft -lXau -lXdmcp -lXpm -lXtst -lXcursor -lXfixes /home/andreas/qt-copy/lib/libQtNetwork.so -lbz2 -lresolv /home/andreas/qt-copy/lib/libQtCore.so -lpthread /home/andreas/qt-copy/lib/libQtDBus.so /home/andreas/qt-copy/lib/libQtXml.so /home/andreas/qt-copy/lib/libQtGui.so -Wl,-rpath,/home/andreas/qt-copy/lib:/home/andreas/kde4/lib 


Andreas

PS: For comparison, this is the content thats generated from cmake 2.4.7
(or cmake cvs from two or three weeks ago, when I last updated):

SET(kdecore_LIB_DEPENDS "/home/andreas/qt-copy/lib/libQtCore.so;-lpthread;/home/andreas/qt-copy/lib/libQtNetwork.so;/home/andreas/qt-copy/lib/libQtDBus.so;/home/andreas/qt-copy/lib/libQtXml.so;libz.so;libbz2.so;resolv;")
SET(kdeui_LIB_DEPENDS "/home/andreas/qt-copy/lib/libQtSvg.so;/home/andreas/qt-copy/lib/libQtCore.so;-lpthread;kdecore;-lSM;libICE.so;libX11.so;libXext.so;libXft.so;libXau.so;libXdmcp.so;libXpm.so;/home/andreas/qt-copy/lib/libQtGui.so;/home/andreas/qt-copy/lib/libQtXml.so;libXtst.so;libXcursor.so;libXfixes.so;")
SET(kio_LIB_DEPENDS "/home/andreas/qt-copy/lib/libQtCore.so;-lpthread;kdecore;kdeui;libz.so;/home/andreas/kde4/lib/libstreamanalyzer.so;/home/andreas/kde4/lib/libstreams.so;/home/andreas/qt-copy/lib/libQtCore.so;-lpthread;kdecore;solid;libfam.so;libacl.so;libattr.so;libXrender.so;")

And this is the linker line for the same lib with cmake 2.4.7:
/usr/lib/ccache/c++  -fPIC -pipe -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -fno-check-new -fno-common -Woverloaded-virtual -fvisibility=hidden -fvisibility-inlines-hidden -O2 -g -Wl,--enable-new-dtags -Wl,--fatal-warnings -Wl,--no-undefined -lc  -shared -Wl,-soname,libkresources.so.4 -o ../lib/libkresources.so.4.1.0 "CMakeFiles/kresources.dir/kresources_automoc.o" "CMakeFiles/kresources.dir/resource.o" "CMakeFiles/kresources.dir/factory.o" "CMakeFiles/kresources.dir/managerimpl.o" "CMakeFiles/kresources.dir/configwidget.o" "CMakeFiles/kresources.dir/configdialog.o" "CMakeFiles/kresources.dir/selectdialog.o" "CMakeFiles/kresources.dir/configpage.o" "CMakeFiles/kresources.dir/idmapper.o" "CMakeFiles/kresources.dir/kresourcesmanageradaptor.o" -L/home/andreas/qt-copy/lib -L/home/andreas/kde4/lib -lQtCore -lpthread -lkdecore -lkdeui -lz -lstreamanalyzer -lstreams -lQtCore -lpthread -lkdecore -lsolid -lfam -lacl -lattr -lXrender -lkio -lQtSvg -lSM -lICE -lX11 -lXext -lXft -lXau -lXdmcp -lXpm -lXtst -lXcursor -lXfixes -lQtNetwork -lbz2 -lresolv -lQtCore -lpthread -lQtDBus -lQtXml -lQtGui -Wl,-rpath,/home/andreas/qt-copy/lib:/home/andreas/kde4/lib 

-- 
Don't look back, the lemmings are gaining on you.


More information about the CMake mailing list