25

私はGNU makeを使用しており、CFLAGS呼び出されたときに環境で定義されていると暴走するビルドシステムを持つプロジェクトにサードパーティのライブラリを含めています。CFLAGS他の理由から、自分の環境で定義したいと思っています。ライブラリのビルドは別のメイクファイルから呼び出されているため、次のように言います。

サードパーティ: $(MAKE) -f Makefile.3rdparty

CFLAGSしかし、サードパーティの Makefile で make を呼び出すときに、それが設定されていないことを確認したいと思います。私が見つけることができる最も近いことは言うことです:

CFLAGS:=

ただし、これはまだCFLAGS環境に設定されたままです。これは単なる空の文字列です。次のように言うような恐ろしいことをすることは別として:

サードパーティ: bash -c "unset CFLAGS; $(MAKE) -f Makefile.3rdparty"

CFLAGSサードパーティのライブラリが呼び出されたときに変数が環境にまったく存在しないように、プライマリ makefile 内から変数を「設定解除」する簡単な方法はありますか?

4

4 に答える 4

30

次のことはあなたのために働きませんか?

unexport CFLAGS
3rdparty:
        $(MAKE) -f Makefile.3rdparty
于 2010-02-02T22:46:54.347 に答える
3

バージョン 3.82 以降、make には「undefine」ディレクティブがあります。

undefine CFLAGS 
于 2018-02-21T00:37:54.207 に答える
-6

Linux で環境変数の設定を解除するには。

使用する:

export -n MY_ENV_VARIABLE
于 2014-08-27T12:00:25.907 に答える