代码片段:
target_test : test.cc
$(CXX) $(CPPFLAGS) $(CFLAGS) test.cc
我知道这CXX
是一个变量(包含要调用的编译器命令),但我想知道这个变量是从哪里来的。该变量未在 makefile 中定义,也不是环境变量。谁能解释 的价值CXX
来自哪里?
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
来获取所有隐式规则和变量的列表。我现在无法显示输出,因为我有一个非标准安装并且输出不是英文的。
谁能解释 的价值
CXX
来自哪里?
像其他“魔法”变量(LD
, RM
, MAKE
)一样,它是由 make 内部预定义的。
这是一个用户可以覆盖的变量,它具有默认值g++
(至少在 GNU Make 版本中)。它没有更多的东西(它没有在某些文件或类似的东西中定义)。
来源:GNU Make 手册