2011-08-17 20 views

cevap

13

Popen aracılığıyla çalıştırdığınız harici komutu çalıştırmak için Command işlevini kullanabilirsiniz ve komutunuzun her zaman hedef dosya olsa bile çalıştırıldığından emin olmak için AlwaysBuild işlevini kullanabilirsiniz. Scons bağımlılık döngülerinden hoşlanmaz, bu yüzden kaynak listesini boş bırakın.

myfile = env.Command('myfile.out', [], 'echo Hello world > $TARGETS') 
env.AlwaysBuild(myfile) 

scons wiki da kolay basit komutları çok kurmak yapar PhonyTargets tarifi vardır.

+0

'myfile.out' oluşturmak için zaten bir kural varsa, hedef oluşturmanın birden çok yolu olduğundan şikayetçi olur. Dosyayı oluşturmak için bir kuralım ve değiştirmek için başka bir tane istiyorum. –

+0

Bir hedef için iki kuralın olması kötü bir fikir olduğunu düşünüyorum. Hedef varsa, 'değiştir' kuralının uygulanıp uygulanmadığını nasıl biliyor? Her bir kural için bir tane olmak üzere iki hedefiniz varsa daha iyi çalışır. Ya da 'oluştur' ve 'değiştir' eylemlerini gerçekleştiren bir kural var. –

+0

"AlwaysBuild" in yanıltıcı bir ad olduğunu belirttiği scons belgelerine dikkat edin. Komutu yayınlamadan önce hala bazı kuralların değerlendirdiği kurallar vardır. –

İlgili konular