On Monday 19 March 2012 17:23:11 David C. Rankin wrote:
On 03/19/2012 08:53 AM, Serghei Amelian wrote:
How can we/what it the proper way to build library search paths into the
tde build systems so that this information is automatically passed to make during the build? Can we do something in cmake to make sure the default $TDEDIR/lib and $TDEDIR/lib/trinity/lib are always passed as flags? This would take care of over half the spurious build failures I see.
The correct way is to fix .pc file, not to mess cmake scripts :)
Serghei,
That is the problem here -- the .pc files ARE correct:
[23:44 nirvana:/mnt/nv1/home/chroot/david/opt/trinity/lib/pkgconfig] # cat dbus-tqt.pc prefix=/opt/trinity exec_prefix=${prefix} libdir=${prefix}/lib includedir=${prefix}/include
Name: dbus-tqt-1 Description: D-BUS TQt bindings Version: 0.7 Requires: dbus-1 Libs: -L${libdir} -ldbus-tqt-1 -ldbus-1 -lpthread -lrt Cflags: -I${includedir} -I${includedir}/dbus-1.0
So according to the .pc file, the cmake setup should include the correct string allowing make to find -ldbus-tqt-1. That Libs: string, as returned by the .pc file should be:
-L${libdir} -....
Which is '-L${prefix}/lib -....' Or with the correct substitutions is:
-L/opt/trinity/lib -ldbus-tqt-1 -ldbus-1 -lpthread -lrt ^^^^^^^
However, the cmake setup does not include the correct -L${libdir}, instead it provides:
'-L/opt/tqt3/lib': ^^^^
I guess this argument is related to TQt3, not to dbus-tqt.
<snip> CMakeFiles/tdeinit_kpowersave-shared.dir/suspenddialog.cpp.o CMakeFiles/tdeinit_kpowersave-shared.dir/suspend_Dialog.cpp.o -L/opt/tqt3/lib -ldbus-tqt-1 -ldbus-1 -lpthread -lrt /opt/trinity/lib/libkio.so.4.2.0 -lhal -lXext -lXtst -lXss /opt/trinity/lib/libtdeui.so.4.2.0 -lfreetype -lfontconfig /opt/trinity/lib/libtdesu.so.4.2.0 -lutil <snip>
So somewhere in cmake it is pulling the wrong ${prefix}. I think this has to be fixed in cmake because the .pc file IS correct. Where exactly is this done in cmake? I think it is checking the wrong .pc file or something like that.
Nope. I think DBUS_TQT_LIBRARY_DIRS is not passed to linker. Try to add this to src/CMakeLists.txt:
link_directories( ${TQT_LIBRARY_DIRS} ${DBUS_TQT_LIBRARY_DIRS} )