On Wed, Jul 10, 2013 at 6:39 PM, Marcus Liebhardt <marcus.liebhardt@yujinrobot.com> wrote:
Hey guys,It's me again. Sorry for the high traffic.I released the openni_tracker and the source build works fine. However, when building the deb, orocos-kdl can't be found.CMake Error at /opt/ros/hydro/share/catkin/cmake/catkinConfig.cmake:72 (find_package): Could not find a configuration file for package orocos_kdl. Set orocos_kdl_DIR to the directory containing a CMake configuration file for orocos_kdl. The file will have one of the following names: orocos_kdlConfig.cmake orocos_kdl-config.cmake Call Stack (most recent call first): CMakeLists.txt:3 (find_package)So, I started looking for the cause of this and found this seemingly related issue involving the geometry stack: https://github.com/ros/geometry/issues/11. The respective fix treats orocos-kdl as a plain Cmake package instead of a catkin package. Unfortunately, when applying this patch to the openni_tracker, my local source build can't find the orocos-kdl library it tries to link to:
Linking CXX executable /opt/sandbox_workspace/devel/lib/openni_tracker/openni_tracker/usr/bin/ld: cannot find -lorocos-kdlcollect2: ld returned 1 exit statusmake[2]: *** [/opt/sandbox_workspace/devel/lib/openni_tracker/openni_tracker] Error 1Again I started off to find hints for the cause of this. I took a look at orocos_kdl-config.cmake and even the package config file, but nothing seems suspicious to me. However, I must say that I don't have lots of CMake experience. So this is harder for me than Korean. 0oOne thing I noticed though is that the CMake log output about orocos-kdl doesn't show any linker flags:Looking for KDL in: /opt/ros/hydro-- checking for one of the modules 'orocos_kdl'Includes in: /opt/ros/hydro/include;/usr/include/eigen3Compiler flags: -I/opt/ros/hydro/include;-I/usr/include/eigen3Libraries: orocos-kdlLibraries in: /opt/ros/hydro/libLinker flags :Defines:I will keep looking further into this. But any hints, tips and help is highly appreciated!Joder! I think, I have found the missing piece - it's called "link_directories()". I shouldn't have looked only at that pull request, but at the newest version of the mentioned CMakeLists example.I'm still a bit confused though. I can't remember needing this "link_directories" addition so far. Furthermore, the ROS wiki even recommends not to use it, since target_link_libraries() should suffice for catkin and plain cmake packages - which is the case here (http://ros.org/wiki/catkin/CMakeLists.txt#Include_Paths_and_Library_Paths).Could someone shed some light on this please?
Thanks again and sorry for the spam,Marcus
Thanks for reading,Marcus