[英]How do I link the library correctly using cmake?
我已經在下面列出了我的項目目錄,所以當我做 cmake build 時,我得到了一個我無法弄清楚的鏈接器錯誤。 我收到一個鏈接器錯誤,即 LIBD 無法找到,盡管 LIBB 已成功形成並且 APP 可執行文件只需要 LIBB 為什么它在嘗試構建 APP 時拋出它需要 LIBD 的鏈接器錯誤?
|---CMakeLists.txt <==== add_subdirectory(source) , add_subdirectory(apps)
|---build
|---include
|---a.h
|---b.h
|---apps|
|---CMakeLists.txt
|---apps.cpp 1] target_link_libraries(APP PUBLIC LIBB) <==== linker error
LIBD not found
|---source
| |---CMakeLists.txt ===> 1]link_directories(PATH TO LIBD)
2]target_link_libraries(LIBA public LIBC) <== successful
3]target_link_libraries (LIBB public LIBA LIBD) <== successful
|---a.cpp
|---b.cpp
|---lib
| |---LIBD <===== static library
link_directories
的范圍限定為包含它的文件,在您的情況下為source/CMakeLists.txt
,因此apps/CMakeLists.txt
不知道在哪里可以找到 LIBD。
您應該在主 CMakeLists.txt 中創建一個 IMPORTED CMake 目標,並鏈接到您需要的位置:
add_library(LIBD IMPORTED)
set_target_properties(LIBD PROPERTIES
IMPORTED_LOCATION lib/LIBD.a)
或者,您可以在apps/CMakeLists.txt
重復link_directories
語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.