簡體   English   中英

C ++庫與CMake的相互依賴性

[英]Interdependancy of C++ libraries with CMake

在如此遙遠的環境下,如何處理CMake文件以及如何處理依賴順序? (請參閱我與問題“ 奇怪的錯誤:未定義對`class :: class()'的引用”相關的上一個問題)。

例如,如果您有一個依賴於庫B的庫A,而庫B又依賴於庫C,那么您將進行編碼

add_library({MY_LIB} A B C)

如何不被迫遵守命令? 在不久之前,我只是做了

target_link_libraries({MY_LIB} {MY_LIB})

但是,這不再對我有用。...我不知道為什么(???)。 因為我有大量相互依賴的庫,所以這個問題很煩人。

請提出任何建議(在Ubuntu 4.8.4-2ubuntu1〜14.04.3上使用cmake 3.5.2,gcc版本4.8.4)?

一個add_library命令創建每個庫,然后設置與依賴target_link_libraries應該夠了。

就您而言,例如

add_library(A ${sources_for_A})
add_library(B ${sources_for_B})
add_library(C ${sources_for_C})

target_link_libraries(A B)  # A depends on B
target_link_libraries(B C)  # B depends on C

# Executable using the libraries
add_executable(program ${sources_for_program})
target_link_libraries(program A)  # Program uses library A (and B and C indirectly)

庫是STATIC還是SHARED都沒有關系。

暫無
暫無

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

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