Build 在CMake中,调用find_包后如何找到导入的目标?
CMake文档说明: 当发现包时,通过包本身记录的变量和导入的目标提供包特定的信息 如果我有一个库,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
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提供了一些生成配置文件的支持(请参见命令),但只有项目作者知道导入目标的含义