簡體   English   中英

是否可以在Makefile中“取消設置”環境變量?

[英]Is it possible to “unset” an environment variable in a Makefile?

我正在使用GNU make,並且在項目中包含第三方庫,如果在調用環境時在環境中定義了CFLAGS ,則該構建系統會變得狂暴。 我喜歡在我的環境中定義CFLAGS ,原因有其他原因。 正在從另一個makefile調用庫的構建,所以我說例如:

第三方: $(MAKE) -f Makefile.3rdparty

但是我想確保在第三方Makefile上調用make時CFLAGS未設置。 我能找到的最近的事情就是說:

CFLAGS:=

但是這仍然會在環境中設置CFLAGS ,它只是一個空字符串。 除了做一些可怕的事情,比如說:

第3方: bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"

是否有一種簡單的方法可以從我的主要makefile中“取消設置” CFLAGS變量,以便在調用第三方庫時環境中根本不存在它?

以下不適合您嗎?

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

從版本3.82開始,make有一個“ undefine ”指令:

undefine CFLAGS 

如果您需要為配方中的其他命令定義變量並且僅希望在子制動中定義變量,則可能會出現問題。 另一個解決方案是使用env - 來調用submake並顯式設置你需要在submake中設置的任何環境變量,例如:

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

在linux中取消設置環境變量。

使用:

export -n MY_ENV_VARIABLE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM