Ошибка при использовании yaml-cpp в ROS?

Я пытаюсь использовать yaml-cpp, и, согласно wiki, это системная зависимость, поэтому мы даже не нужно изменять CMakelists.txt или manifest.xml. Однако, когда я компилирую код, я все равно получаю такие ошибки, как:

/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:53: undefined reference to `YAML::Parser::Parser(std::basic_istream<char, std::char_traits<char> >&)'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:54: undefined reference to `YAML::Node::Node()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Node::~Node()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Parser::~Parser()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Node::~Node()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Parser::~Parser()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Node::~Node()'
/home/aramus/fuerte_workspace/sandbox/image_test/src/image_test.cpp:92: undefined reference to `YAML::Parser::~Parser()'

Единственный код, который я добавил в CMakeLists.txt:

target_link_libraries(${PROJECT_NAME} yaml-cpp)
rosbuild_add_executable(image_test src/image_test.cpp)

Я использую fuerte в Linux. Любые решения кто-нибудь?

РЕДАКТИРОВАТЬ: я нашел свое решение! Я изменил свой CMakeLists.txt, чтобы сначала создать исполняемый файл, а затем добавить библиотеку yaml-cpp!

rosbuild_add_executable(image_test src/image_test.cpp)
target_link_libraries(image_test yaml-cpp)

Эти две строки в моем CMakeLists.txt работают нормально!


person joshualan    schedule 05.04.2013    source источник


Ответы (1)


Это ошибки компоновщика. Убедитесь, что вы ссылаетесь на библиотеку, а также включаете ее заголовки. Из предоставленной вами ссылки видно, что в вашем файле CMakeLists.txt вам нужно:

target_link_libraries(${PROJECT_NAME} yaml-cpp)
person Jesse Beder    schedule 05.04.2013
comment
Спасибо, я добавил эту строку в конец, и теперь она творит чудеса! Первоначально он был у меня до кода rosbuild_add_executable, и это сильно меня испортило. - person joshualan; 05.04.2013