You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取CMake中mypkg包“命名空间”下的所有导入目标?

获取CMake中mypkg::前缀的所有目标列表

要提取find_package(mypkg)导入的所有mypkg::前缀目标,可以通过以下步骤实现:

核心实现代码

# 获取项目中所有目标
get_cmake_property(all_targets BUILDSYSTEM_TARGETS)

# 初始化存储目标列表的变量
set(mypkg_targets "")

# 遍历筛选前缀匹配的目标
foreach(target ${all_targets})
    if(target MATCHES "^mypkg::")
        list(APPEND mypkg_targets ${target})
    endif()
endforeach()

# 可选:打印结果验证
message(STATUS "mypkg相关目标列表: ${mypkg_targets}")

版本兼容说明

  • 上述代码中BUILDSYSTEM_TARGETS属性要求CMake 3.15及以上版本,它能获取构建系统内的所有目标(包括导入目标)
  • 若使用CMake 3.14及更早版本,可替换为以下方式获取所有目标:
    get_property(all_targets GLOBAL PROPERTY TARGETS)
    

注意事项

由于题目已明确项目中无其他mypkg::前缀的目标,因此无需额外过滤逻辑,直接匹配前缀即可完成筛选。

内容的提问来源于stack exchange,提问作者einpoklum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:32:34