如何让Scons编译失败时仍生成compile_commands.json适配CLion?
编译失败时生成compile_commands.json的可行方案
使用Scons的
--keep-going参数
直接执行带-k(--keep-going的缩写)参数的构建命令,让Scons在遇到编译错误时不终止整个构建流程,继续处理尽可能多的源文件:scons -k compile_commands.json这个参数会让构建过程跳过编译失败的文件,把那些语法合规、能正常生成编译命令的文件条目写入
compile_commands.json。CLion可以识别这些已收录的文件,提供代码补全功能,后续修复代码后重新构建,文件条目会自动更新。仅生成编译命令不执行完整编译
针对Godot C++模块的Scons构建脚本,可以通过调整参数,让构建系统只完成预编译和编译命令收集的步骤,跳过实际的目标文件编译与链接:- 在Godot的Scons配置中,添加
--no-link参数(如果构建脚本支持),或者临时修改模块的Sconscript,注释掉链接相关的逻辑,只保留编译单个源文件的规则。 - 执行构建命令生成
compile_commands.json,此时即使代码存在链接错误或部分语法问题,只要单个文件的编译命令能被正确解析,就会被收录到文件中。
- 在Godot的Scons配置中,添加
手动补充关键文件的编译条目
如果少量核心文件编译失败但你知道它们的编译参数,可以手动编辑compile_commands.json,参考已生成的条目格式添加对应内容。比如参考同模块中其他文件的条目,修改file路径和对应的command参数,CLion会自动识别这些手动添加的条目,提供代码补全支持。
内容的提问来源于stack exchange,提问作者Steven Green
相关产品推荐
相关产品推荐

