如何使用CMake修改导入库的范围

时间:2012-03-09 03:00:12

标签: cmake

CMake问题,

导入的库在创建它的目录及其下方具有范围。

如果我想在父范围内使用此库,我该怎么办?

例如,

top CMakeLists.txt

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

sub CMakeLists.txt

add_library(imported_lib STATIC IMPORTED)

感谢您的帮助~~

2 个答案:

答案 0 :(得分:1)

与传统库不同,导入的库的范围限定在目录中。 可以使用GLOBAL选项更改此内容。

这是extract from the documentation

  

目标名称在创建它的目录及其下方具有范围,但GLOBAL选项扩展了可见性。

示例:

add_library(imported_lib STATIC IMPORTED GLOBAL)

据我所知,此选项一直可用。

答案 1 :(得分:0)

您无需执行任何操作,CMake将自动解决此依赖关系。请参阅add_subdirectory的文档:

  

如果父项目构建的目标依赖于子目录中的目标,则dependee目标将包含在父项目构建系统中以满足依赖项。

这与set()和list()命令形成对比,后者需要传递一个显式的PARENT_SCOPE参数。