コードスニペット:
target_test : test.cc
$(CXX) $(CPPFLAGS) $(CFLAGS) test.cc
CXX
は変数(呼び出すコンパイラコマンドを含む)であることは知っていますが、この変数はどこから来たのだろうと思っていました。変数はメイクファイルで定義されておらず、環境変数でもありません。 CXX
の値がどこから来たのか、誰でも説明できますか?
Makeにはいくつかの 事前定義変数 があり、その中にはCC
があります。最初は、インストールされたCコンパイラへのシンボリックリンクであるcc
に設定されます。
$ readlink -f `which cc`
/usr/bin/gcc-4.6
また:
$ readlink -f `which c++`
/usr/bin/g++-4.6
必要に応じて変更できます。
make -p -f /dev/null
を使用して、すべての暗黙のルールと変数のリストを取得できます。非標準のインストールがあり、出力が英語ではないため、現在出力を表示できません。
CXX
の値がどこから来たのか、誰でも説明できますか?
他の「魔法の」変数(LD
、RM
、MAKE
)と同様に、makeによって内部的に事前定義されています。
これは、ユーザーがオーバーライドできる変数であり、デフォルト値g++
(GNU Makeバージョンでは、少なくとも)。それ以上のことは何もありません(いくつかのファイルまたはそのようなもので定義されていません)。
ソース: The GNU Make Manual