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
Build 在CMake中,调用find_包后如何找到导入的目标?_Build_Cmake_Package_Package Managers - Fatal编程技术网

Build 在CMake中,调用find_包后如何找到导入的目标?

Build 在CMake中,调用find_包后如何找到导入的目标?,build,cmake,package,package-managers,Build,Cmake,Package,Package Managers,CMake文档说明: 当发现包时,通过包本身记录的变量和导入的目标提供包特定的信息 如果我有一个库,ABCDConfig.CMake,我可以使用find_package获取它,前提是CMake可以找到合适的ABCDConfig.CMake文件。然后,如上文所述,它创建导入的目标(例如abcd10 abcdExtra) 然后我可以编译并链接这些库,如下所示: target_include_directories(mytarget abcd10 abcdExtra) target_link_libr

CMake文档说明:

当发现包时,通过包本身记录的变量和导入的目标提供包特定的信息

如果我有一个库,
ABCDConfig.CMake
,我可以使用
find_package
获取它,前提是CMake可以找到合适的
ABCDConfig.CMake
文件。然后,如上文所述,它创建导入的目标(例如
abcd10 abcdExtra

然后我可以编译并链接这些库,如下所示:

target_include_directories(mytarget abcd10 abcdExtra)
target_link_libraries(mytarget abcd10 abcdExtra)
问题是,根据其他人编写的
ABCDConfig.cmake
文件的内容,目标的名称几乎可以是任何东西(例如
abcdlib
abcdX64
Foobar
,…),即使它可能是完全相同的库
abcdlib

我已经浏览了很多文档,但是我看不到任何获取导入目标的方法,所以看起来我必须知道所有常见的导入目标名称,并分别检查它们。这对我来说似乎有点不合理。我是不是遗漏了什么?在不知道这些细节的情况下,如何加载和链接由不同的包管理器(甚至是编写自己的
ABCDConfig.cmake
文件的人)生成的库

在不知道这些细节的情况下,如何加载和链接由不同的包管理器(甚至是编写自己的ABCDConfig.cmake文件的人)生成的库

你不能

唯一的方法是阅读有关特定
ABCDConfig.cmake
文件的文档。此类文档通常写在文件的开头(作为注释)

CMake不强制执行关于
ABCDConfig.CMake
文件的任何内容,因此只有文件的作者知道如何使用它

虽然CMake提供了一些生成配置文件的支持(请参见命令),但只有项目作者知道导入目标的含义

在不知道这些细节的情况下,如何加载和链接由不同的包管理器(甚至是编写自己的ABCDConfig.cmake文件的人)生成的库

你不能

唯一的方法是阅读有关特定
ABCDConfig.cmake
文件的文档。此类文档通常写在文件的开头(作为注释)

CMake不强制执行关于
ABCDConfig.CMake
文件的任何内容,因此只有文件的作者知道如何使用它

虽然CMake提供了一些生成配置文件的支持(请参见命令),但只有项目作者知道导入目标的含义