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

如何配置CLion将新建源文件及头文件自动添加至CMake变量

如何让CLion新建文件时自动更新指定CMakeLists.txt的变量

当然可以覆盖CLion的默认行为!它的文件模板功能允许我们自定义新建.cpp/.hpp文件时的逻辑,自动把文件路径添加到你指定的SRC和HEADERS变量里,而不是默认的add_executable中。下面是具体的实操方案:

1. 打开CLion的文件模板设置

打开CLion后,按以下路径进入设置:

  • Windows/Linux:File → Settings
  • Mac:CLion → Settings

在设置窗口里,找到 Editor → File and Code Templates,切换到Files标签页——这里就是我们要修改的源文件和头文件模板所在位置。

2. 修改C++源文件(.cpp)模板

找到列表里的C++ Source File,点击右侧的编辑按钮,把模板内容替换成下面的代码(记得替换成你自己的项目路径和变量名):

#if ${INCLUDE_GUARD}
#include "${HEADER_FILE}"
#endif

// 自动更新目标CMakeLists.txt的SRC变量
#[[
<#assign target_cmake = "${PROJECT_DIR}/src/CMakeLists.txt"> <!-- 替换成你的目标(1*)CMakeLists.txt路径 -->
<#assign src_var = "SRC"> <!-- 你的源文件变量名 -->
<#list FILES as file>
<#assign rel_path = file.relativePath>
<#if rel_path?starts_with("src/sources/")> <!-- 匹配你的源文件存放目录 -->
<#file target_cmake append=true>
set(${src_var} ${${src_var}} ${rel_path})
</#file>
</#if>
</#list>
]]

关键说明:

  • ${PROJECT_DIR}是CLion内置宏,代表项目根目录,确保路径精准指向你的目标CMakeLists.txt。
  • rel_path?starts_with("src/sources/")用来过滤:只有存放在src/sources/下的文件才会被添加到SRC变量中。

3. 修改C++头文件(.hpp)模板

同样在Files标签页找到C++ Header File,编辑模板内容如下:

#ifndef ${INCLUDE_GUARD}
#define ${INCLUDE_GUARD}

// 自动更新目标CMakeLists.txt的HEADERS变量
#[[
<#assign target_cmake = "${PROJECT_DIR}/src/CMakeLists.txt"> <!-- 同样替换成目标CMakeLists.txt路径 -->
<#assign header_var = "HEADERS"> <!-- 你的头文件变量名 -->
<#list FILES as file>
<#assign rel_path = file.relativePath>
<#if rel_path?starts_with("src/headers/")> <!-- 匹配你的头文件存放目录 -->
<#file target_cmake append=true>
set(${header_var} ${${header_var}} ${rel_path})
</#file>
</#if>
</#list>
]]

#endif // ${INCLUDE_GUARD}

4. 调整你的CMakeLists.txt结构

确保你的目标CMakeLists.txt(1*)里已经初始化变量,并且在add_executable中正确引用它们:

# 目标CMakeLists.txt(1*)
# 初始化空变量
set(SRC "")
set(HEADERS "")

# 后续CLion会自动往上面两个变量里追加新文件路径
add_executable(YourTargetName ${SRC} ${HEADERS})

而默认配置的CMakeLists.txt(2*)只需要包含目标所在的目录即可,不要直接往add_executable里添加文件:

# 默认配置CMakeLists.txt(2*)
add_subdirectory(src)

验证效果

现在新建一个.cpp文件到src/sources/目录下,打开目标CMakeLists.txt,你会看到SRC变量已经自动追加了新文件的相对路径;新建.hpp到src/headers/目录,HEADERS变量也会同步更新。

如果遇到问题,优先检查:

  • 模板里的路径是否和你的项目结构完全匹配
  • 目标CMakeLists.txt是否有读写权限
  • 模板中的FreeMarker语法(<#...>部分)有没有拼写错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:28:07