2012-07-09 29 views
30

Snippet di codice:Da dove viene il valore di CXX in un makefile?

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

so che CXX è una variabile (che contiene il comando del compilatore per chiamare), ma mi chiedevo dove questa variabile viene. La variabile non è definita nel makefile e non è una variabile di ambiente. Qualcuno può spiegare da dove viene il valore di CXX?

risposta

29

make ha parecchi predefined variables tra i quali è CC. Inizialmente, si è fissato a cc che è un link simbolico al compilatore C installato:

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

anche:

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

si può cambiare se si vuole.

È possibile utilizzare make -p -f /dev/null per ottenere un elenco di tutte le regole e le variabili implicite. Non posso mostrare l'output adesso perché ho un'installazione non standard e l'output non è in inglese.

+3

ad esempio: $ make -p -f/dev/null | grep CXX fornisce: CXX = g ++ – ady

15

CXX è una variabile implicita in GNU make. There are others too.

Non solo, queste variabili implicite vengono utilizzate in implicit rules.

Ecco un estratto relativo a come CXX viene utilizzato da una regola implicita:

compilazione di programmi C++
n.o è fatto automaticamente dal n.cc, n.cpp o n.C con una ricetta della forma
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c.
Si consiglia di utilizzare il suffisso '.cc' per i file di origine C++ anziché '.C'.

1

qualcuno può spiegare in cui il valore di CXX viene?

Come altri variabes “magici” (LD, RM, MAKE), è predefinito internamente da fare.

0

Questa è una variabile che un utente può sovrascrivere e che ha come valore predefinito g++ (nella versione GNU Make, almeno). Non c'è niente di più (non è definito in alcuni file o cose del genere).

Fonte: The GNU Make Manual

Problemi correlati