CMake的find_package
文件说:通过提供变量和进口由封装本身记载目标在CMake中,如何在调用find_package后找到导入的目标?
当包发现包特有的信息。
如果我有一个图书馆,ABCD
我可以开始使用find_package
,提供的CMake可以找到一个合适的ABCDConfig.cmake
文件。然后它创建如上所述的导入目标(例如abcd10 abcdExtra
)。
然后,我可以编译和对这些库的链接,像这样:
target_include_directories(mytarget abcd10 abcdExtra)
target_link_libraries(mytarget abcd10 abcdExtra)
的问题是,这取决于怎么说ABCDConfig.cmake
文件,别人写的内容,该目标的名称可能是几乎任何东西(例如abcdlib
,abcdX64
,Foobar
,...),即使它可能是完全相同的库ABCD
!
我已阅读了大部分文档,但看不到任何获取导入目标的方法,因此看起来我必须知道所有常用导入目标名称是什么,并单独检查它们。这对我来说似乎有点不合理。我在这里错过了什么吗?如何在不知道这些细节的情况下,加载并链接由不同软件包管理器(甚至是自己编写文件的人)生成的库?