2012-07-09 5 views
30

Fragmento de código:¿De dónde viene el valor de CXX en un archivo MAKE?

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

sé que CXX es una variable (que contiene el comando del compilador para llamar), pero me preguntaba donde esta variable viene. La variable no está definida en el archivo MAKE y no es una variable de entorno. ¿Alguien puede explicar de dónde viene el valor de CXX?

Respuesta

29

Make tiene varias predefined variables entre los cuales es CC. Inicialmente, se fijó en cc que es un enlace al compilador C instalado:

$ readlink -f `which cc` 
/usr/bin/gcc-4.6 

también:

$ readlink -f `which c++` 
/usr/bin/g++-4.6 

puedes cambiarlo si lo desea.

Puede usar make -p -f /dev/null para obtener una lista de todas las reglas y variables implícitas. No puedo mostrar la salida en este momento porque tengo una instalación no estándar y la salida no está en inglés.

+3

por ejemplo: $ make -p -f/dev/null | grep CXX da: CXX = g ++ – ady

15

CXX es una variable implícita en GNU make. There are others too.

No sólo eso, estas variables implícitas se acostumbra en implicit rules.

He aquí un extracto relativa a la forma en CXX es utilizado por una regla implícita: programas

Compilación C++
n.o se hace automáticamente de n.cc, n.cpp o n.C con una receta de la forma
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c.
Lo invitamos a usar el sufijo '.cc' para los archivos fuente C++ en lugar de '.C'.

1

¿Puede alguien explicar donde el valor de CXX viene?

Al igual que otros variabes “mágicas” (LD, RM, MAKE), es predefinidos internamente por marca.

0

Esta es una variable que un usuario puede anular y que tiene por defecto el valor g++ (en la versión GNU Make, al menos). No hay nada más que eso (no está definido en algún archivo o cosas así).

Fuente: The GNU Make Manual

Cuestiones relacionadas