名前$ MY_ENV_VARIABLEの環境変数が設定されています。makeファイル内の環境変数を読み取る
私のメークファイル内でこの変数を使用して(たとえば)いくつかのソースファイルを含めるにはどうすればよいですか?
LOCAL_SRC_FILES = $(MY_ENV_VARIABLE)/libDEMO.so
上記のようなものは動作していないようです。
注:私の場合、これはAndroid NDKでのビルドに必要ですが、一般的にはこれが該当します。
名前$ MY_ENV_VARIABLEの環境変数が設定されています。makeファイル内の環境変数を読み取る
私のメークファイル内でこの変数を使用して(たとえば)いくつかのソースファイルを含めるにはどうすればよいですか?
LOCAL_SRC_FILES = $(MY_ENV_VARIABLE)/libDEMO.so
上記のようなものは動作していないようです。
注:私の場合、これはAndroid NDKでのビルドに必要ですが、一般的にはこれが該当します。
シェルから変数をエクスポートしたことを確認してください。実行中:
echo $MY_ENV_VARIABLE
あなたのシェルに設定されているかどうかを示します。しかし、サブシェルと(メイクなどの)他のサブコマンドは、それが実行してみてください見ることができるようにあなたがそれを輸出してきたかどうかを知るために:
env | grep MY_ENV_VARIABLE
それがない場合は、makeを実行する前にexport MY_ENV_VARIABLE
を実行するようにしてください。
これですべてのことができます。makeは起動時にすべての環境変数をmake変数として自動的にインポートします。メイクで環境変数にアクセスするための
'csh'では' setenv MY_VAR my_val'です – mpen
ただ、いくつかの情報を追加するために...
構文はメイクで他の変数のようなものです...
#export the variable. e.g. in the terminal,
export MY_ENV_VARIABLE="hello world"
...
#in the makefile (replace before call)
echo $(MY_ENV_VARIABLE)
これはcommmandを実行する前に置換を行います。かわりに、置換は、コマンドの実行中に発生する場合は、$
(例えば、echo $MY_ENV_VARIABLE
が間違っているとメイクで変数M
を代用し、Y_ENV_VARIABLE
にそれを追加しようとします)...
#in the makefile (replace during call)
echo $$MY_ENV_VARIABLE
私はちょうど(Cygwinの下)同様の問題があった:
env | grep OSTYPE
は、任意の出力を与えるものではありません実行しているシェルプリント上echo $OSTYPE
値が、export
EDであることを保証することはできませんのようは、私はメイクファイル内から変数を取得するために、次の使用:
OSTYPE = $(shell echo $$OSTYPE)
どの
ifeq ($(shell echo $$OSTYPE),cygwin)
# ...do something...
else
# ...do something else...
endif
EDIT:
012のコースも、次のような条件の中で使用することができます私はすべてのメイクファイルの中から、 jozxyqk's answerからの情報を使って実験後に発見されたのいくつかのもの:私はレシピに@echo $$OSTYPE
または@echo "$$OSTYPE"
を実行すると、変数が正常にcygwin
に
ifeq ($$OSTYPE,cygwin)
やifeq ("$$OSTYPE","cygwin")
のような条件で使用しても展開されません。TEST = "$$OSTYPE"
のような変数を設定することcygwin
を印刷echo $(TEST)
につながる(拡大はecho
呼び出しによって行われます)が、それは条件では動作しないことを論理的である - ifeq ($(TEST),cygwin)
はfalseです。
正常に動作するはずです。変数が設定されていますか? – Matthias
@Sander、宣言された変数は動作するはずです。また、=の代わりに=を使用してスペースを削除することもできます... makeの呼び出しで-eオプションを試しましたか? 、-e:環境変数を優先させます... – nsd