Scons 使用 Clang -MJ 选项

标签 scons clang++

嗨,我正在尝试使用 Scons 构建系统在 Windows 上构建一个compile_commands.json,所有其他可能性都失败了。

我决定使用 Clang -MJ 选项来执行此操作,因为这似乎是最简单的解决方案。

问题是我不清楚如何使用 Scons 构建系统来做到这一点;基本上我必须将 -MJ myfilename.o.json 添加到每个构建命令中。我目前正在构建一个包含多个源文件的库,如下所示: library = env.StaticLibrary(target=result_path + '/' + result_name, source=sources)

基本上最后我应该有: clang++ -target x86_64-pc-windows-gnu -MJ AABB.o.json -o src/core/AABB.o -c -m64 -g -O3 -std=c++14 -Wwrite-strings -I。 -I/c/GodotLibraries/godot_headers -Iinclude -Iinclude/core src/core/AABB.cpp

提前致谢,

`

最佳答案

您正在尝试为当前构建环境设置特殊的编译器标志。这是通过将新标志附加到正确的环境变量来完成的。根据您要使用的构建过程 (=Builder),相应的单个构建操作 (=Actions) 可能会使用不同的变量。 User Guide包含附录 A“构造变量”,列出了默认变量及其概要。

在您的情况下,CCFLAGS 是相关的,可以像这样使用:

env = Environment()
env.Append(CCFLAGS=['-MJ','AAB.o.json','-m64','-g','-O3'])

env.Program(...)

以同样的方式,您可以通过相应地设置 CXX 变量来使 SCons 使用 clang 编译器:

env = Environment()
env['CXX']='clang'
env.Append(CCFLAGS=['-MJ','AAB.o.json','-m64','-g','-O3'])

env.Program(...)

我希望这能让您了解 SConsBuilder/Action 设置的总体思路:执行命令的基本结构是每个构建器始终相同,但您可以通过设置和覆盖那些扩展的环境变量来影响最终输出。

关于Scons 使用 Clang -MJ 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50341906/

相关文章:

Emacs + GDB + SCons + 单步调试

c++11 - 运算符 std::string() 上的 abi_tab:clang++ 和 g++ 中的不兼容

c++ - 在哪里放置 std::wstring_convert<std::codecvt_utf8<wchar_t>>?

lldb 错误 : process launch failed: unable to locate lldb-server

python - SCons if/then 语句

build - SCons 和/或 CMake : any way to automatically map from "header included during compilation" to "corresponding object file must be linked"?

cmake - SCons 或 CMake 而不是 qmake

python - 卸载安装有 `pip install --egg` 的 python 包

c++ - gcc vs clang 公共(public)库问题

C++析构函数过早调用