Kullanım Kılavuzu tek bir program birden çok sürümünü kurmak inşa etmek Multiple Construction Environments kullanımı hakkında anlatır ve şu örneği veriyor Scons:Scons: Bir programın birden varyantları için aynı inşaatçılar (salma/hata ayıklama) nasıl kullanılır
/variant_dir
VariantDir()
daha iyi bir çözüm gibi görünse
yerine manuel olarak farklı ortamlarda derlenmiş nesnelere farklı adlar atama
opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')
o = opt.Object('foo-opt', 'foo.c')
opt.Program(o)
d = dbg.Object('foo-dbg', 'foo.c')
dbg.Program(d)
...
Ama SConscript içine Program()
oluşturucu yerleştirirseniz:
Import('env')
env.Program('foo.c')
Farklı ortamları aynı SConscript dosyasına nasıl aktarabilirim?
opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')
SConscript('SConscript', 'opt', variant_dir='release') #'opt' --> 'env'???
SConscript('SConscript', 'dbg', variant_dir='debug') #'dbg' --> 'env'???
Maalesef SCons Wiki tartışma bu konuya daha fazla fikir getirmiyor.
Girişiniz için teşekkürler! yapabilirsiniz SConscript dan sonra
for dir, env in (('release', opt), ('debug', dbg)):
env.SConscript('SConscript', 'env', variant_dir=dir)
Ve: ihracat SConscript için arg olarak
Import('env')
Teşekkür ederim BennyG: Bu çok ilginç ve pythonic :-) görünüyor. Önerinizi denemeye başladım ama şu ana kadar yapılarımdaki diğer değişikliklerle sıkışıp kaldım ... Daha sonra geri bildirim ile geri döneceğim! –
Hala varyant_dir’in SConscript’ime getirdiği bazı yönleriyle uğraşıyorum, fakat çözümünüz benim için mükemmel bir çözüm. Tekrar teşekkürler! –