Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用CMake修改导入库的范围_Cmake - Fatal编程技术网

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

如何使用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(

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(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_软件包的文档。