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)
感谢您的帮助~~
答案 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参数。