2010-06-07 12 views
5

şu anda donuk .cmd komut dosyalarından SCons'a kadar bir milyon eğimli eski projeyi çalıştırmaya çalışıyorum. Bunun parçaları VC++, diğerleri Delphi. C++ parçaları için SConscripts oluşturmak bir esinti oldu.SConscript oluşturucuyu dizini değiştirmek için nasıl zorlayabilirim?

Delphi bölümünü oluşturmak için bir program veya kitaplık projesi olup olmadığını algılayan çok basit bir oluşturucu yazdım. SConscript ile zincirleme yaptıktan sonra kurucuyu çağırmak, dcc32 $ subdir/project.dpr çağrısına işaret eder ve dcc32'yi $ subdir yerine mevcut dizindeki birimleri arayarak yanlış yönlendirir.

Sconscript'te yer alan komutları çalıştırmadan önce, scons'ların $ subdir'e girmesini söyleyen bir yol var mı, yoksa oluşturucuda tamir etmeli miyim?

bunları okurken

cevap

5

Scons zaten alt dizin SConscripts ait dizine değiştirir şimdiden teşekkürler, bu yüzden sorun fiili oluşturucu düzeltilmesi gereken olacakmış gibi görünüyor.

Komut dosyaları ayrıştırıldıktan ve SCon'lar derleme komutlarını çalıştırdığında, üst düzey dizinde kalır. Komutlar daha sonra bu üst düzey dizine göre yol adları kullanılarak verilir. Bu davranışı değiştirmenin yolu, Oluşturucunuzdaki chdir anahtar sözcüğünü kullanmaktır. onlar hala göredir, yani

b = Builder(action='build < ${SOURCE.file} > ${TARGET.file}', 
      chdir=1) 
env = Environment(BUILDERS = {'MyBuild' : b}) 
env.MyBuild('sub/dir/foo.out', 'sub/dir/foo.in') 

Sen, oluşturucu geçirilen isimlerini değiştirmez chdir kullanımı gibi .file bileşeni belirtmek gerekir: şöyle

scons adam sayfasından örneğidir Üst düzey dizin.

+0

Tam olarak ihtiyacım olan kombinasyon budur. Çözümün benim problemimi çözdü. Çok teşekkür ederim! – Damg

İlgili konular