コードスニペット:
target_test : test.cc
$(CXX) $(CPPFLAGS) $(CFLAGS) test.cc
CXX
それが変数 (呼び出すコンパイラ コマンドを含む) であることは知っていますが、この変数がどこから来たのか疑問に思っていました。変数はメイクファイルで定義されておらず、環境変数ではありません。の値がどこCXX
から来るのか説明できる人はいますか?
Make にはいくつかの事前定義された変数があり、その中には がありCC
ます。最初にcc
、インストールされた C コンパイラへのシンボリック リンクが次の場所に設定されます。
$ 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バージョンでは)。それ以上のことは何もありません(それはいくつかのファイルまたはそのようなもので定義されていません)。