2012-07-09 14 views
30

コードスニペット:メイクファイル内のCXXの値はどこから来ますか?

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

私はCXXは(呼び出すためのコンパイラコマンドを含む)の変数ですが、この変数はどこから来るのか、私が思っていたことを知っています。この変数はmakefileで定義されておらず、環境変数ではありません。誰でもCXXの値はどこから来るのか説明できますか?

答えて

29

メイクはCCあり、その中predefined variablesいくつかを持っています。最初は、インストールされ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を使用すると、すべての暗黙のルールと変数のリストを取得できます。私は非標準のインストールがあり、出力は英語ではないので、今すぐ出力を表示することはできません。

+3

例:$ make -p -f/dev/null | grep CXXは次のようになります。 CXX = g ++ – ady

15

CXXはGNU makeの暗黙の変数です。 There are others too

これらの暗黙の変数は、implicit rulesで使用されます。


n.o C++プログラムをコンパイルフォーム
のレシピ とn.ccn.cpp、又はn.Cから自動的に行われる:ここ

はCXXが暗黙のルールで使用される方法に関連する抽出物であります$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
「。C」の代わりにC++のソースファイルに接尾辞「.cc」を使用することをお勧めします。

1

CXXの値はどこから来るのですか?他の「マジック」variabes(LDRMMAKE)と同様

、それはメイクによって内部あらかじめ定義されています。

0

これは、ユーザーが上書きできる変数で、デフォルト値はg++(GNU Make版以上)です。それ以上のことはありません(ファイルやそのようなものには定義されていません)。

出典:The GNU Make Manual

関連する問題