【发布时间】:2022-01-26 03:26:02
【问题描述】:
有时我希望我能获得属于某个包的导入目标的列表。是否有一个变量来保存它们?
这样我就可以写出这样的东西了
find_package(Qt5 CONFIG REQUIRED)
message("Imported Qt5 targets: ${Qt5_IMPORTED_TARGETS}") # speculative code
根据我目前的知识,我必须依靠包的文档来为我提供所有导入目标的名称。从变量或属性中读取它们会更容易。
【问题讨论】:
-
我不认为这是可能的,但实际上它会非常有用。好问题。
-
好主意!我不相信目前有任何直接的方法可以做到这一点。很可能通过扫描
add_executable(...IMPORTED)和add_library(...IMPORTED)的 FindModule 文件(模块模式)和 targets.cmake 文件(配置模式)来破解某些东西。 -
但是,您可以通过拦截对
add_library的调用来覆盖它,使用INTERFACE保存调用并将其传递给实际的内置函数来破解它。例如。大致描述为here。