52

コードスニペット:

target_test : test.cc 
    $(CXX) $(CPPFLAGS) $(CFLAGS) test.cc

CXXそれが変数 (呼び出すコンパイラ コマンドを含む) であることは知っていますが、この変数がどこから来たのか疑問に思っていました。変数はメイクファイルで定義されておらず、環境変数ではありません。の値がどこCXXから来るのか説明できる人はいますか?

4

4 に答える 4

47

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して、すべての暗黙のルールと変数のリストを取得できます。非標準のインストールを使用しており、出力が英語ではないため、現在出力を表示できません。

于 2012-07-09T12:13:14.463 に答える
19

CXXは、GNUmakeの暗黙の変数です。他にもあります

それだけでなく、これらの暗黙の変数は暗黙のルールで使用されます。

これは、暗黙のルールによるCXXの使用方法に関する抜粋です。

C ++プログラムのコンパイルは、、、またはの形式のレシピを使用して
n.o自動的に行われn.ccます。 C ++ソースファイルには、「。C」の代わりに接尾辞「.cc」を使用することをお勧めします。n.cppn.C
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c

于 2012-07-09T12:08:02.890 に答える
2

の価値がどこCXXから来るのか誰かが説明できますか?

他の「魔法の」変数(、、LD)と同様にRMMAKEmakeによって内部的に事前定義されています。

于 2012-07-09T12:08:13.770 に答える
0

これは、ユーザーがオーバーライドできる変数であり、デフォルト値がありますg++(少なくとも、GNU Makeバージョンでは)。それ以上のことは何もありません(それはいくつかのファイルまたはそのようなもので定義されていません)。

出典:GNU Make Manual

于 2012-07-09T12:08:16.810 に答える