私はいくつかのmakeをテストし、シェルの環境変数の問題はMakeファイルの中にはありません。セットアップに何が間違っているのだろうか。私は私のmac os、redhat、およびUbuntuでテストしました。彼らはすべて同じ行動をしています。私は誰もこれを助けることができるのだろうか。ここでなぜmakeは環境変数を受け取ることができないのですか?
GNU Make 4.1
は私の最も簡単なメイクファイルです:
ifdef $(HOME)
$(info $$HOME is $(HOME))
else
$(info $$HOME is undefined)
endif
all :
echo do nothing
ターミナルでmakeと入力すると、私はここでのエコーの$ HOME
/Users/myusername
$HOME is undefined
echo do nothing
do nothing
が定義され得ますメイクのマニュアルブックhttps://www.gnu.org/software/make/manual/html_node/Environment.html
makeの変数は、makeが実行される環境から来る可能性があります。 makeが起動するときに見えるすべての環境変数は、同じ名前と値を持つmake変数に変換されます。しかし、makefileやコマンド引数に明示的に代入すると、環境が上書きされます。
実際、私は$ HOME/.bash_profileで定義した別の環境変数をテストしていました。私は輸出を忘れる。私が$ MYVARABLEをエコーしてもmakeの内部にはない変数は見えます。ここで私のダミーmakeファイルの環境変数をテストする際に、別の '$'をgivintでもう一度間違えました。ダンの答えをありがとう。 –
ここでmake 3.79.1ドキュメントにリンクした理由はありますか?特にリンクは 'old-gnu' URLなので、あなたは特に** makeより新しいバージョンのmakeを使用していますか? (正確には14年半が新しい) –
特に理由はありません。私はちょうどgoogleで検索し、それはGoogle検索の最初の項目です。 makeのほとんどのユーザーは専門家でなければならず、新しいマニュアルをそれ以上読んではいけません。したがって、古いバージョンが最も広報されます。 –