makefile中CXX的值来自哪里?

Ana*_*eda 42 c c++ makefile

代码片段:

target_test : test.cc 
    $(CXX) $(CPPFLAGS) $(CFLAGS) test.cc
Run Code Online (Sandbox Code Playgroud)

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

Mih*_*eac 35

Make有几个预定义的变量,其中包括CC.最初,它设置为cc已安装的C编译器的符号链接:

$ readlink -f `which cc`
/usr/bin/gcc-4.6
Run Code Online (Sandbox Code Playgroud)

也:

$ readlink -f `which c++`
/usr/bin/g++-4.6
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以更改它.

您可以使用make -p -f /dev/null获取所有隐式规则和变量的列表.我现在无法显示输出,因为我有非标准安装,输出不是英文.

  • 例如:$ make -p -f/dev/null | grep CXX给出:CXX = g ++ (3认同)

Arj*_*kar 17

CXX是GNU make中的隐式变量.还有其他人.

不仅如此,这些隐式变量在隐式规则中使用.

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

编译的C++程序
n.o从自动地进行n.cc,n.cpp或者n.C与以下形式的配方
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c.
我们建议您对C++源文件使用后缀".cc"而不是".C".