Bir SCONS komut dosyasında, başka ortamlardan türettiğim bir temel ortam oluşturur. Böyle bir şey:env.Clone() scons içinde derin kopyalama yapmaz
base = Environment()
base['CXXFLAGS'] += ['-DBOOST_HAS_PTHREAD', '-D__STDC_CONSTANT_MACROS', '-DFILELOG_MAX_LEVEL=4', '-Wall']
opt = base.Clone()
opt['CXXFLAGS'] += ['-DNDEBUG', '-O3']
Bu şekilde, ben taban ortamından daha ortamını (salma/debug/Araçlı/pgo) oluşturabilir. SCons belgelerinde, env.Clone() öğesinin env'nin derin bir kopyasını yaptığı söylenir. Ama aslında işe yaramıyor. çünkü örnekte, temel ortam -DNDEBUG ve -O3 bayraklarına sahip olacaktır.
Bir sorun mu yapıyorum?
düzenleme: İşte gerçek kod. Bu kodda iki tane baskı ifadesi var ve bence aynı şeyleri yazdırmalılar ama yapmıyorlar. çıktısı aşağıdaki gibidir:
# -*- 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']
çıkışı:
|| 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.
Düzenleme 2:
:Bu Scons http://scons.tigris.org/issues/show_bug.cgi?id=2390
Düzenleme 3 ile bir böcek1.3.1 giderilen ve 2.0.1
Merhaba, bu hataya bir hata buldum (http://scons.tigris.org/issues/show_bug.cgi?id=2390). Geliştiricilerin bu hatayı yeniden üretemeyeceği anlaşılıyor, bu yüzden bu dosyayı RESOLVED olarak işaretledi. –
Hata yeniden açıldı ve umarım bir sonraki sürümlerde düzeltilecektir. –
Bu, 1.3.1'de düzeltildi gibi görünüyor. Doğrulayabilir misin? – bdbaddog