【发布时间】:2009-05-04 01:45:50
【问题描述】:
在 SCons 脚本中,我创建了一个基础环境,从中派生出其他环境。像这样:
base = Environment()
base['CXXFLAGS'] += ['-DBOOST_HAS_PTHREAD', '-D__STDC_CONSTANT_MACROS', '-DFILELOG_MAX_LEVEL=4', '-Wall']
opt = base.Clone()
opt['CXXFLAGS'] += ['-DNDEBUG', '-O3']
这样,我可以从基础环境创建更多环境(发布/调试/仪表化/pgo)。在 SCons 文档中,据说 env.Clone() 对 env 做了一个深拷贝。但实际上它似乎不起作用。因为在示例中,基础环境将应用 -DNDEBUG 和 -O3 标志。
我做错了什么?
edit : 这是真正的代码。此代码中有两个打印语句,我认为它们应该打印相同的内容,但事实并非如此。输出如下:
# -*- coding: utf-8 -*-
import os.path
import glob
local_env = Environment()
local_env['CXXFLAGS'] += ['-DBOOST_HAS_PTHREAD', '-D__STDC_CONSTANT_MACROS', '-DFILELOG_MAX_LEVEL=4', '-Wall']
local_env.Append(LIBS = ['pthread', 'boost_thread', 'boost_filesystem', 'boost_program_options', 'boost_iostreams'])
opt = local_env.Clone()
opt['CXXFLAGS'] += ['-DNDEBUG', '-O3']
print opt['CXXFLAGS']
instr = opt.Clone()
instr['CXXFLAGS'] += ['-fprofile-arcs']
instr['LIBS'] += ['gcov']
print opt['CXXFLAGS']
输出:
|| scons: Reading SConscript files ...
|| -DBOOST_HAS_PTHREAD -D__STDC_CONSTANT_MACROS -DFILELOG_MAX_LEVEL=4 -Wall -DNDEBUG -O3
|| -DBOOST_HAS_PTHREAD -D__STDC_CONSTANT_MACROS -DFILELOG_MAX_LEVEL=4 -Wall -DNDEBUG -O3 -fprofile-arcs
|| scons: done reading SConscript files.
|| scons: Building targets ...
|| scons: `.' is up to date.
|| scons: done building targets.
编辑 2:
这是 SCons http://scons.tigris.org/issues/show_bug.cgi?id=2390 的一个错误
编辑 3:
将在 1.3.1 和 2.0.1 中修复
【问题讨论】:
标签: scons