makefile中CXX的值来自哪里?

时间:2012-07-09 12:05:17

标签: c++ c makefile

代码段:

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

我知道CXX是一个变量(包含要调用的编译器命令),但我想知道这个变量来自哪里。该变量未在makefile中定义,也不是环境变量。任何人都可以解释CXX的价值来自何处?

4 个答案:

答案 0 :(得分:34)

Make有几个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获取所有隐式规则和变量的列表。我现在无法显示输出,因为我有非标准安装,输出不是英文。

答案 1 :(得分:17)

CXX是GNU make中的隐式变量。 There are others too

不仅如此,这些隐式变量也在implicit rules中使用。

以下是与隐式规则如何使用CXX有关的摘录:

  

编译C ++程序
      n.o自动从n.ccn.cppn.C制作$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c   形式的   {{1}}。
  我们建议您对C ++源文件使用后缀“.cc”而不是“.C”。

答案 2 :(得分:2)

  

任何人都可以解释CXX的价值来自何处?

与其他“神奇”变种(LDRMMAKE)一样,它是由make在内部预定义的。

答案 3 :(得分:0)

这是一个用户可以覆盖的变量,其默认值为g++(至少在GNU Make版本中)。它没有更多的东西(它没有在某些文件或类似的东西中定义)。

来源:The GNU Make Manual