能否在CMake项目中添加非目标全局文件至CMake文件夹?
如何在CMake中添加不绑定任何目标的全局文件
标准解决方案:自定义目标+文件夹属性
你提到的自定义目标并非权宜之计,而是CMake官方认可的标准实现方式,完全能满足你的需求:
- 创建一个无实际执行操作的自定义目标,将全局文件关联到该目标下
- 通过
FOLDER属性将这个目标归类到指定目录,在IDE项目树中独立展示,不依附任何业务目标
示例代码
# 定义需要展示的全局文件列表 set(GLOBAL_DOC_FILES docs/requirements.md docs/design_spec.pdf README.md ) # 创建空的自定义目标,仅用于在IDE中展示文件 add_custom_target(GlobalFiles ALL SOURCES ${GLOBAL_DOC_FILES} ) # 设置目标的文件夹属性,让IDE将其归类到指定分组 set_target_properties(GlobalFiles PROPERTIES FOLDER "Project Documents" )
其他方法无效的原因
CMake的核心逻辑围绕目标构建,所有需要在IDE项目树中显示的文件必须关联到某个目标。set_property()或set_source_files_properties()仅能修改已绑定目标的文件属性,无法让未关联目标的文件出现在IDE视图中。
额外优化技巧
- 若不想让自定义目标参与默认构建流程,可移除
ALL关键字,这样该目标不会被默认构建触发(由于目标本身无执行操作,实际影响很小) - 可配合
source_group在自定义目标下对文件做进一步分组,让结构更清晰:
source_group("需求文档" FILES docs/requirements.md) source_group("设计规范" FILES docs/design_spec.pdf) source_group("根目录文件" FILES README.md)
内容的提问来源于stack exchange,提问作者Peter - Reinstate Monica
相关产品推荐
相关产品推荐

