[英]CMake project linking a static library
我目前正在嘗試在我的cmake項目中包括一個靜態庫。 當我構建項目時,出現如下錯誤:
[ 50%] Building CXX object src/CMakeFiles/MainApp.dir/main.cpp.o
[100%] Linking CXX executable MainApp
../../lib/librplidar_sdk.a(thread.o): In function `rp::hal::Thread::create(unsigned long (*)(void*), void*)':
thread.cpp:(.text+0x20): undefined reference to `pthread_create'
/../lib/librplidar_sdk.a(thread.o): In function `rp::hal::Thread::terminate()':
thread.cpp:(.text+0x48): undefined reference to `pthread_cancel'
CMakeLists.txt看起來像這樣(RPlidar是靜態庫):
##################################################################
# RPLidar SDK #
##################################################################
add_library(RPlidar STATIC IMPORTED)
set_property(TARGET RPlidar PROPERTY IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/librplidar_sdk.a)
set_property(TARGET RPlidar APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include/rplidar>
)
##################################################################
# Main Executable #
##################################################################
add_executable(MainApp main.cpp)
target_link_libraries(MainApp PRIVATE RPlidar)
我發現,當將鏈接器選項(-l)放在要編譯的文件名的前面而不是之后時,會出現這類錯誤。 但是我不知道如何在我的cmake配置中解決這個問題。
您必須鏈接pthread
:
target_link_libraries(MainApp PRIVATE pthread RPlidar)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.