如何阻止Eclipse CDT重复编译/构建?优化编译链接设置
解决Eclipse CDT重复编译与重复链接问题
避免单文件编译后全构建重复编译
- 核对单文件编译的输出路径:
右键项目 → Properties → C/C++ Build → Settings → Build Steps,确认Compile File操作生成的.o文件路径和全构建的输出路径完全一致。CDT经常因为路径差异(比如临时编译目录和正式的Debug/Release目录),误判文件未更新,必须保证两者输出到同一个子目录下。 - 调整构建依赖检查逻辑:
进入C/C++ Build → Builder Settings,勾选Use parallel build(没开的话打开),再切到Behavior标签,确保Build (Incremental build)的参数是all,别选带清理的选项。另外把Clean before building的勾去掉(如果之前勾了的话)。 - 修复文件时间戳问题:
有些系统的时间戳精度不够会让CDT搞错文件状态。可以在C/C++ Build → Environment里加个环境变量SOURCE_DATE_EPOCH,设成一个固定的时间戳(比如1700000000),强制CDT用统一的时间戳判断文件是否需要重新编译。
避免运行前重复链接
- 修改运行配置的构建触发规则:
打开Run Configurations(右键项目 → Run As → Run Configurations),选中你的C/C++应用配置,切到Build标签:- 要么取消Build before launching的勾选,要么选Build only if resource has changed,别用默认的Always build。
- 如果必须保留构建检查,就选Incremental build而不是Full build。
- 给链接器加缓存参数:
进项目属性的C/C++ Build → Settings → Tool Settings,找到链接器(比如GCC C++ Linker),在Miscellaneous里加参数-Wl,--cache-path=${ProjDirPath}/.linkcache,让链接器缓存中间结果,减少重复链接的时间。 - 调整工作区刷新设置:
打开Window → Preferences → General → Workspace,取消Refresh using native hooks or polling的勾选,改成Refresh on access。避免系统自动刷新文件导致CDT误以为可执行文件需要重新链接。
内容的提问来源于stack exchange,提问作者Martin_from_K
相关产品推荐
相关产品推荐

