簡體   English   中英

CMake項目鏈接靜態庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM