你好,我在CmakeList和Boost的依賴方面遇到了麻煩。我CmakeList看起來是這樣的:在CmakeList中鏈接Boost庫的麻煩
cmake_minimum_required(VERSION 2.8.3)
project(cpp_arm)
add_compile_options(-std=c++11)
find_package(catkin REQUIRED COMPONENTS
moveit_core
)
find_package(Boost REQUIRED COMPONENTS
system
filesystem
date_time
thread
)
catkin_package()
include_directories(${catkin_INCLUDE_DIRS})
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
add_executable(hello_world src/hello_world.cpp)
add_executable(test_arm src/test_arm.cpp)
target_link_libraries(cpp_arm ${Boost_LIBRARIES})
install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
PATTERN "setup_assistant.launch" EXCLUDE)
install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
首先我有這個,我couldn't完成catkin_make煩惱。我沒有下面的代碼:
target_link_libraries(cpp_arm ${Boost_LIBRARIES})
這給了我以下錯誤:
CMakeFiles/test_arm.dir/src/test_arm.cpp.o: In function `_GLOBAL__sub_I_main':
test_arm.cpp:(.text.startup+0x43): undefined reference to `boost::system::generic_category()'
test_arm.cpp:(.text.startup+0x48): undefined reference to `boost::system::generic_category()'
test_arm.cpp:(.text.startup+0x4d): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status
尋找這個錯誤了,我發現不同的主題在這個(堆棧)後說,你需要鏈接cmakelist中的boost庫讓cmake「找到」它。我這樣做,因爲我的代碼所示(相應於提及的話題中描述的語法),但是這將導致一個新的錯誤:
CMake Error at cpp_arm/CMakeLists.txt:25 (target_link_libraries):
Cannot specify link libraries for target "cpp_arm" which is not built by
this project.
當我擡起頭來的錯誤我主要是看到題目說的鏈接庫的語法是不正確的,問題是我的語法與解決方案主題中提到的語法相同。
爲什麼我得到這個錯誤,我該如何解決這個問題?
在此先感謝
編輯:我看到有什麼我的項目其實是有些混亂。我正在運行一個ROS包,它是通過MoveIT設置助手創建的,該助手爲我的catkin_workspace中的ROS生成一個包。在此工作區中,我的軟件包文件夾位於名稱cpp_arm。在這個包/文件夾裏面是我的CmakeList,在這個文件夾裏面還有一個文件夾src它包含一個簡單的C++文件(test_arm.cpp)。
這CPP文件看起來像這樣:
#include <moveit/move_group_interface/move_group_interface.h>
main()
{
}
我在Ubuntu上add_library
和add_executable
創建目標16.04
你是否正在交叉編譯?或者是你的開發機器ARM? cpp_arm是紅鯡魚嗎? – sehe