scons - Scons 使用 Clang -MJ 选项
问题描述
嗨,我正在尝试使用 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 ) 可能使用不同的变量。用户指南包含附录 A “构造变量”,列出了默认变量及其概要。
在您的情况下,这CCFLAGS
是相关的,可以像这样使用:
env = Environment()
env.Append(CCFLAGS=['-MJ','AAB.o.json','-m64','-g','-O3'])
env.Program(...)
以同样的方式,您可以通过相应地设置变量来使SCons使用clang
编译器:CXX
env = Environment()
env['CXX']='clang'
env.Append(CCFLAGS=['-MJ','AAB.o.json','-m64','-g','-O3'])
env.Program(...)
我希望这能让您了解SCons中Builder / Action设置背后的一般概念:每个Builder执行命令的基本结构始终相同,但您可以通过设置和覆盖那些扩展的环境变量来影响最终输出.
推荐阅读
- shake-build-system - 在 Shake 中,Rules 的定义顺序重要吗?
- vue.js - Vue i18n,如何获取 dateTimeLocalization 的语言环境?
- c++ - 如何在成员函数内将函数及其参数传递给 std::async
- android - 如何保存片段数据以显示给下次登录
- python - How I can write the format of my date when I use apply and datetime functions?
- html - 当我减小浏览器大小时,为什么“lounge-mobile.css”样式表没有链接?
- python - Django 按其他模型的值对过滤后的对象进行排序
- matplotlib - Matplotlib Gridspsec 行之间的间距
- visual-studio-code - server.sh not found when establishing vscode remote ssh connection
- json - JSON 编码/解码和 RSA 证书