如何使用CMake修改导入库的范围
CMake问题 导入的库在创建它的目录及其下具有作用域 如果我想在父作用域中使用这个库,我应该怎么做 比如说, top CMakeLists.txt如何使用CMake修改导入库的范围,cmake,Cmake,CMake问题 导入的库在创建它的目录及其下具有作用域 如果我想在父作用域中使用这个库,我应该怎么做 比如说, top CMakeLists.txt add_subdirectory(sub) add_executable(myapp main.cpp) target_link_libraries(myapp imported_lib) add_library(imported_lib STATIC IMPORTED) sub-CMakeLists.txt add_subdirectory(
add_subdirectory(sub)
add_executable(myapp main.cpp)
target_link_libraries(myapp imported_lib)
add_library(imported_lib STATIC IMPORTED)
sub-CMakeLists.txt
add_subdirectory(sub)
add_executable(myapp main.cpp)
target_link_libraries(myapp imported_lib)
add_library(imported_lib STATIC IMPORTED)
感谢您的帮助~~您不需要做任何事情,CMake将自动解决此依赖关系。有关以下内容,请参阅文档: 如果父项目生成的目标依赖于子目录中的目标,则dependee目标将包含在父项目生成系统中以满足依赖关系
这与set()和list()命令不同,它们需要传递一个显式的PARENT_SCOPE参数。与经典库不同,导入的库的作用域为目录。 这可以使用
全局
选项进行更改
以下是一份:
目标名称在创建它的目录及其下具有作用域,但全局选项扩展了可见性
例如:
add_library(imported_lib STATIC IMPORTED GLOBAL)
据我所知,此选项一直可用。此库被许多目标使用。我希望我不需要每次添加新目标时都修改子目录。在这种情况下,您可能需要编写一个查找脚本。有关详细信息,请参阅find_软件包的文档。