2010-02-02 25 views
17

GNU make kullanıyorum ve çağıran ortamda CFLAGS ortamda tanımlanmış bir yapı sistemi olan bir projede 3. taraf kitaplığı dahil ediyorum. Çevremde diğer nedenlerle tanımlanan CFLAGS'u kullanmayı seviyorum. Kütüphanenin inşa ı örn demek ki .:Makefile'de bir ortam değişkeninin "unset" olması mümkün mü?

3rdParty, başka makefile gelen çağrılan ediliyor: $(MAKE) -f Makefile.3rdparty

Ama 3 parti Makefile üzerinde yapmak çağırmak zaman CFLAGS ayarlanmazsa emin olmak istiyorum. Bulabileceğim en yakın şey demek ki:

CFLAGS:=

Ama bu yine de, çevrede CFLAGS set bırakır sadece boş bir dize var. Apart demek gibi iğrenç bir şey yapmaktan:

3.taraf: hiç de değil bulunacak şekilde bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"

için "kurulmamış" birincil makefile içinden CFLAGS değişken kolay bir yol var mı Üçüncü parti kitaplığı çalıştırıldığında çevre?

cevap

23

Aşağıdakiler sizin için çalışmıyor mu? Tarifin diğer komutlar için tanımlanacak ve sadece submake tanımlanan istemiyoruz değişkeni gerekirse

unexport CFLAGS 
3rdparty: 
     $(MAKE) -f Makefile.3rdparty 
+0

! "Unexport" anahtar kelimesini bilmiyordum, şimdi yapıyorum. Teşekkürler! –

+1

@JayWalker, lütfen bu yanıtı, memnun iseniz kabul edileni olarak işaretleyin. –

0

Bu sorunlu olabilir. Başka bir çözüm env kullanmaktır - submake çağırmak için ve açıkça size submake belirlenen ihtiyaç herhangi ortam değişkenleri, örneğin ayarlayın:

env - PATH="$$PATH" LD_LIBRARY_PATH="$$LD_LIBRARY_PATH" $(MAKE) -f Makefile.3rdparty 
-3

linux Çevre değişkeni unset için.

Kullanım: 3,82 yapmak bir "undefine" yönergesi vardır sürümüyle birlikte

export -n MY_ENV_VARIABLE 
0

:

It does
undefine CFLAGS 
İlgili konular