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

如何使用CMake实现Visual Studio根过滤器下文件的整洁放置

解决方案

你遇到的根目录文件无法通过source_group(TREE)直接映射到解决方案根节点的问题,本质是没有禁用Visual Studio的默认源文件分组规则,无需拆分根目录和子目录文件,按以下配置即可实现单条source_group调用完成需求,适配CMake 3.8及以上版本:

完整配置代码

# 全局配置:启用文件夹支持,禁用VS默认的「Source Files」「Header Files」自动分组
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

# 读取目标关联的所有源文件和头文件
get_target_property(local_app_sources ${my_target} SOURCES)
get_target_property(local_app_headers ${my_target} HEADERS)
set(local_app_files ${local_app_sources} ${local_app_headers})

# 可选:过滤掉构建目录下的生成文件,避免分组异常
list(FILTER local_app_files INCLUDE REGEX "^${CMAKE_CURRENT_SOURCE_DIR}/.*")

# 一次性完成目录结构映射,无需手动拆分根目录/子目录文件
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${local_app_files})

关键说明

  • 不需要添加PREFIX参数,source_group(TREE)默认前缀为空,刚好匹配你不需要顶层前置目录的需求
  • 所有传入FILES的文件路径必须为绝对路径且以${CMAKE_CURRENT_SOURCE_DIR}开头,或为相对于${CMAKE_CURRENT_SOURCE_DIR}的相对路径,才能正确计算相对路径生成嵌套过滤器
  • 若你使用file(GLOB)采集文件,只要GLOB的根路径是${CMAKE_CURRENT_SOURCE_DIR},路径格式天然符合要求,无需额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:39:03