inq*_*uam 26 gcc makefile g++ cc
我有一个包含声明的C程序的Makefile
CC?=gcc
Run Code Online (Sandbox Code Playgroud)
把它改成
CC?=g++
Run Code Online (Sandbox Code Playgroud)
不会用g ++编译它.把它改成
CC=g++
Run Code Online (Sandbox Code Playgroud)
是否使用g ++.
所以我想知道?=运算符是做什么的?我的猜测是它查看一个环境变量来决定使用哪个编译器,如果没有设置,那么使用gcc?谁可以解决这个问题?
ken*_*ytm 34
来自http://www.gnu.org/software/make/manual/make.html:
变量有另一个赋值运算符,`?='.这称为条件变量赋值运算符,因为它仅在尚未定义变量时才有效.这个说法:
Run Code Online (Sandbox Code Playgroud)FOO ?= bar
与此完全等效(参见原点函数):
Run Code Online (Sandbox Code Playgroud)ifeq ($(origin FOO), undefined) FOO = bar endif
可能CC
已被定义为gcc
,因此CC ?= g++
不会覆盖现有的 gcc
.
正如其他人提到的,它可能已经是预定义的。
\n在 GNU 上,您可以make -p
从不包含Makefile
.
这记录在: https ://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
\n\n\n抄送
\n编译C程序的程序;默认 \xe2\x80\x98cc\xe2\x80\x99。
\n
通常,CC=cc
默认情况下。然后在 Ubuntu 14.04 上,例如,cc
通常是指向gcc
.
要立即禁用所有变量,请参阅:从 make 文件内部禁用 make 内置规则和变量目前似乎不可能。
\n 归档时间: |
|
查看次数: |
33212 次 |
最近记录: |