我最终选择了:
env = Environment()
env.Append(CCFLAGS='-Werror')
env.Append(CCFLAGS=ARGUMENTS.get('CCFLAGS', ''))
env.Program(target='main.out', source=['main.c'])
可以用作:
scons CCFLAGS='-Wall -pedantic'
并将编译为:
gcc -o main.o -c -Werror -Wall -pedantic main.c
您可能想保留env.Append(CCFLAGS=ARGUMENTS.get('CCFLAGS', ''))
行作为最后一次更改CCFLAGS
,因为这将允许覆盖命令行上的默认值:GCC 倾向于仅使用最后一个值作为实际值。
TODO:如何使其与变量一起使用?这会更好,因为我们可以获得更多的错误检查和帮助消息生成:
variables = Variables(None, ARGUMENTS)
variables.Add('CCFLAGS', 'my help', '')
env = Environment(variables)
env.Append(CCFLAGS='$CCFLAGS')
env.Append(CCFLAGS=['-Werror'])
env.Program(
source=['main.c'],
target='main.out',
)
Help(variables.GenerateHelpText(env))
但这由于引用错误而失败:
gcc -o main.o -c "-Wall -pedantic" -Werror main.c