Robotics StackExchange | Archived questions

undefined reference cmake

Hi,

I'm trying link my own library in ros, which .cpp is in lib folder and the .h is in include folder. My folder schema is:

-CMakeList.txt
-Build/
-src/
---- Program.cpp
-lib/
---- MyLib.cpp
-include/
---- MyLib.h

I have create the next cmake:

cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)

rosbuild_init()

set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)

find_package(PCL 1.6 REQUIRED)
message("PCL:" ${PCL_INCLUDE_DIRS})

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

rosbuild_add_library(MyLib lib/MyLib.cpp)

rosbuild_add_executable(Program src/Program.cpp)
target_link_libraries(Program MyLib ${PCL_LIBRARIES})

When I excute rosmake it show next error:

   src/Program.cpp:34: undefined reference to function....

The function that is not referenced is in MyLib, whoever rosmake has create libMyLib.o in lib folder.

If I writte the code of methods in MyLib.h instead of in MyLib.cpp I haven't this error.

Can anyone help me?

thanks

Asked by aps40 on 2013-03-22 02:08:16 UTC

Comments

I can't see why off-hand, but why don't you post the results of CDing into the build folder and running "VERBOSE=1 make" (without quotes) - that should help anyone help you.

Asked by DamienJadeDuff on 2013-03-22 02:46:02 UTC

Also, I'm not sure how it could be relevant, but why don't you try moving MyLib.cpp out of the lib/ folder and into a different one, as lib/ normally receives the binary library files (e.g. MyLib.so).

Asked by DamienJadeDuff on 2013-03-22 03:10:50 UTC

Answers