簡體   English   中英

CMake:生成庫並將其鏈接到可執行文件中,導致未定義的參考錯誤

[英]CMake: build lib and link it to executable results in undefined reference error

我有一個cmake設置,應該首先構建一個庫,然后使用該庫創建可執行文件:

# build and install the project lib
add_library(lib${PROJECT_NAME} 
    test.cpp
)
install(TARGETS lib${PROJECT_NAME} DESTINATION ${INSTALL_DIR})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/ DESTINATION ${INSTALL_INCLUDE_DIR} FILES_MATCHING PATTERN "*.h*")


# link lib and create executable
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(lib${PROJECT_NAME})

install(TARGETS ${PROJECT_NAME} DESTINATION ${INSTALL_DIR})

lib構建部分起作用,但似乎lib的鏈接無效。 我正在使用在test.cpp中實現的簡單添加方法,但獲得了對該方法的未定義引用。

我在這里想念什么?

target_link_libraries調用的第一個參數必須是庫應鏈接到的目標的名稱,即您的情況下的${PROJECT_NAME} ,第二個參數是庫的目標。 請參閱target_link_libraries的文檔。

在您的示例中,您需要使用: target_link_libraries(${PROJECT_NAME} lib${PROJECT_NAME})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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