使用 Scons 删除 CCFLAGS 中的标志

jhi*_*515 7 scons

我发现示例替换了 Scons 中的 CCFLAGS 标志,但没有删除标志。例如,如果您有一个具有定义的高级 SConstruct 文件:

baseEnv.Append( CCFLAGS = [ '-Wall', '-D_FORTIFY_SOURCE=1' ])
Run Code Online (Sandbox Code Playgroud)

您想要在较低级别的 Sconscript 文件中删除该标志:

myEnv = baseEnv.Clone()
# Remove '-D_FORTIFY_SOURCE=1' flag from myEnv:CCFLAGS
Run Code Online (Sandbox Code Playgroud)

你会怎样做呢?

bia*_*.is 8

您可以在 SConscript 文件中使用如下所示的删除方法:

myEnv=baseEnv.Clone()
if '-D_FORTIFY_SOURCE=1' in myEnv['CCFLAGS']:
    myEnv['CCFLAGS'].remove('-D_FORTIFY_SOURCE=1')
Run Code Online (Sandbox Code Playgroud)

我用 SCons 2.3.0 尝试过,效果很好。