[英]using static libraries in cmake project
我有兩個C ++項目A和B。項目B取決於項目A。項目A的結構分為幾個子目錄:
Project A
|-\inc
| |-a1.h
| |-a2.h
|-\src
|-CMakeLists.txt
|-\subdir_A1
| |-CMakeLists.txt
| |-a1.cpp
|
|-\subdir_A2
|-CMakeLists.txt
|-a2.cpp
Project B
|-\lib
|-a1.h
|-a2.h
|-lib_ProjectA.a
|-\src
|-CMakeLists.txt
|-b.cpp
問題在於項目B無法解析項目A的定義。 盡管我已經在Project B中將target_link_libraries
添加到CMakeLists.txt中,但還是出現了這樣的錯誤:
未定義對`project_a :: a1 :: func1()的引用”
UPD1
我通過復制子目錄(liba1.a,liba2.a)中的所有庫並將它們鏈接到項目,成功地編譯了ProjectB。 我想知道是否有可能調整Project A,以便僅使用一個文件lib_ProjectA.a。
UPD2
碼:
項目A
add_library (adapter
adapter.cpp
)
target_link_libraries (adapter PUBLIC
net # From project's A subdirectory
utils # From project's A subdirectory
)
項目B
add_library (anthill
functional_block.cpp)
target_link_libraries(anthill
${PROJECT_SOURCE_DIR}/lib/libjsoncpp.a
${PROJECT_SOURCE_DIR}/lib/libadapter.a
${PROJECT_SOURCE_DIR}/lib/libnet.a # Can't compile without it
${PROJECT_SOURCE_DIR}/lib/libutils.a # Can't compile without it
)
使用OBJECT選項的最佳解決方案:
add_library(myObjects OBJECT a.c b.c)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.