Scons 使用 Clang -MJ 选项
Scons to use Clang -MJ option
您好,我正在尝试使用 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 "Construction Variables",列出了默认变量及其概要。
在你的情况下,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(...)
我希望这能让您了解 Builder/Action 在 SCons[=34] 中设置的总体思路=]:每个 Builder 执行的命令的基本结构始终相同,但是您可以通过设置和覆盖那些 环境变量 [=34] 来影响最终输出=] 得到扩展。
从 SCons 4.0.0 开始,您可以让 SCons 像这样构建编译数据库:
env.Tool('compilation_db')
env.CompilationDatabase('compile_commands.json')
您好,我正在尝试使用 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 "Construction Variables",列出了默认变量及其概要。
在你的情况下,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(...)
我希望这能让您了解 Builder/Action 在 SCons[=34] 中设置的总体思路=]:每个 Builder 执行的命令的基本结构始终相同,但是您可以通过设置和覆盖那些 环境变量 [=34] 来影响最终输出=] 得到扩展。
从 SCons 4.0.0 开始,您可以让 SCons 像这样构建编译数据库:
env.Tool('compilation_db')
env.CompilationDatabase('compile_commands.json')