2012-03-09 29 views
3

CMake問題,如何使用CMake修改導入庫的範圍

導入的庫的範圍在創建它的目錄中和下面。

如果我想在父範圍內使用這個庫,我該怎麼做?

例如,

頂部的CMakeLists.txt

add_subdirectory(sub) 
add_executable(myapp main.cpp) 
target_link_libraries(myapp imported_lib) 

子的CMakeLists.txt

add_library(imported_lib STATIC IMPORTED) 

感謝您的幫助~~

回答

0

你不需要做任何事情,CMake都會自動解決這個依賴關係。查看文檔add_subdirectory

如果父項目建設的目標取決於子目錄的目標,該目標dependee將包含在父項目生成系統,以滿足依賴性。

這與需要傳遞顯式PARENT_SCOPE參數的set()和list()命令形成鮮明對比。

+0

這個庫被許多目標使用。我希望每次添加新目標時都不需要修改子目錄。 – compass00 2012-03-12 18:03:16

+0

在這種情況下,您可能需要編寫查找腳本。有關詳細信息,請參閱find_package的文檔。 – ComicSansMS 2012-03-13 07:56:02

1

與經典庫不同,導入的庫被限制到目錄。 這可以使用GLOBAL選項進行更改。

這裏是一個extract from the documentation

目標名稱具有在創建它和下面的目錄範圍,但全球選件擴展知名度。

例子:

add_library(imported_lib STATIC IMPORTED GLOBAL) 

據我所知,這個選項一直是可用的。