parametros ejecutar compilar compilador gcc makefile g++ cc

gcc - ejecutar - ¿Qué significa CC?=En un Makefile significa?



gcc linux (4)

Tengo un Makefile para un programa de C que tiene la declaración

CC?=gcc

Cambiándolo a

CC?=g++

NO lo hace compilar con g ++. Cambiándolo a

CC=g++

HACE que use g ++.

Así que me pregunto qué hace el operador? =? Mi conjetura es que mira una variable de entorno para decidir qué compilador usar y si no está configurado, ¿usar gcc? ¿Alguien que pueda aclarar esto?


Como han mencionado otros, es probable que ya esté predefinido.

En GNU, puede ver lo que está definido con make -p desde un directorio que no contiene un Makefile .

Esto se documenta en: https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html

Por lo general, CC=cc por defecto. Luego, en Ubuntu 14.04, por ejemplo, cc suele ser un enlace simbólico a gcc .

Para deshabilitar todas las variables a la vez, vea: Deshabilitar las reglas y variables integradas desde dentro del archivo de creación Parece actualmente imposible.


Desde http://www.gnu.org/software/make/manual/make.html :

Hay otro operador de asignación para variables, `? = ''. Esto se denomina operador de asignación de variables condicionales, porque solo tiene efecto si la variable aún no está definida. Esta declaración:

FOO ?= bar

es exactamente equivalente a esto (ver La función de origen):

ifeq ($(origin FOO), undefined) FOO = bar endif

Probablemente CC ya está definido como gcc , por lo que CC ?= g++ no reemplazará el gcc existente.


El operador ?= Establece la variable solo si aún no está establecida: info make* Using Variables* Setting .