Woher kommt der Wert von CXX in einem Makefile?

Lesezeit: 2 Minuten

Benutzeravatar von Ananke Leda
Anake Leda

Code-Auszug:

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

ich weiß das CXX ist eine Variable (die den aufzurufenden Compilerbefehl enthält), aber ich habe mich gefragt, woher diese Variable kommt. Die Variable ist nicht im Makefile definiert und ist keine Umgebungsvariable. Kann jemand erklären, wo der Wert von CXX kommt von?

Make hat mehrere vordefinierte Variablen darunter ist CC. Anfangs ist es auf eingestellt cc Dies ist ein symbolischer Link zum installierten C-Compiler:

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

Ebenfalls:

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

Sie können es ändern, wenn Sie möchten.

Sie können verwenden make -p -f /dev/null um eine Liste aller impliziten Regeln und Variablen zu erhalten. Ich kann die Ausgabe im Moment nicht anzeigen, da ich eine nicht standardmäßige Installation habe und die Ausgabe nicht auf Englisch ist.

  • zum Beispiel: $ make -p -f /dev/null | grep CXX ergibt: CXX = g++

    – ady

    3. September 2015 um 20:02 Uhr


CXX ist eine implizite Variable in GNU make. Es gibt auch andere.

Darüber hinaus werden diese impliziten Variablen verwendet implizite Regeln.

Hier ist ein Auszug, der sich darauf bezieht, wie CXX von einer impliziten Regel verwendet wird:

Kompilieren von C++-Programmen
n.o wird automatisch aus gemacht n.cc, n.cppoder n.C mit einem Rezept des Formulars
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c.
Wir empfehlen Ihnen, für C++-Quelldateien die Endung „.cc“ anstelle von „.C“ zu verwenden.

Kann jemand erklären, wo der Wert von CXX kommt von?

Wie andere „magische“ Variablen (LD, RM, MAKE), wird intern von make vordefiniert.

Dies ist eine Variable, die ein Benutzer überschreiben kann und die einen Standardwert hat g++ (zumindest in der GNU Make-Version). Es gibt nichts mehr dazu (es ist nicht in irgendeiner Datei oder so etwas definiert).

Quelle: Das GNU-Make-Handbuch

1411770cookie-checkWoher kommt der Wert von CXX in einem Makefile?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy