target_test : test.cc
$(CXX) $(CPPFLAGS) $(CFLAGS) test.cc
我知道CXX
是一個變量(包含編譯命令調用),但我想知道這個變量從何而來。該變量未在makefile中定義,也不是環境變量。任何人都可以解釋CXX
的價值來自哪裏?
target_test : test.cc
$(CXX) $(CPPFLAGS) $(CFLAGS) test.cc
我知道CXX
是一個變量(包含編譯命令調用),但我想知道這個變量從何而來。該變量未在makefile中定義,也不是環境變量。任何人都可以解釋CXX
的價值來自哪裏?
製作有幾個predefined variables其中之一就是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是GNU make中的隱式變量。 There are others too。
不僅如此,這些隱式變量可用於implicit rules。
在這裏被提取有關CXX是如何使用的隱式規則:
編譯的C++程序
n.o
從n.cc
,n.cpp
,或n.C
自動進行與以下形式的配方
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
。
我們鼓勵您使用後綴'.cc'作爲C++源文件而不是'.C'。
誰能解釋其中的
CXX
的價值從何而來?
像其他「神奇」的變量都(LD
,RM
,MAKE
),它是由內部化妝預定義。
這是一個用戶可以覆蓋的變量,其默認值爲g++
(至少在GNU Make版本中)。沒有什麼比它更多的了(它沒有在某些文件或類似的東西中定義)。
例如:$ make -p -f/dev/null | grep CXX給出: CXX = g ++ – ady 2015-09-03 20:02:39