Wie kann ich GNU Make dazu bringen, einen anderen Compiler zu verwenden, ohne das Makefile manuell zu bearbeiten?
Lassen Sie GNU einen anderen Compiler verwenden
Sie sollten in der Lage sein, Folgendes zu tun:
make CC=my_compiler
Dies setzt voraus, dass derjenige, der das Makefile geschrieben hat, die Variable CC verwendet hat.
-
Häufig verwendete Variablen sind
CC
,GCC
,CCX
etc… aber wie gesagt, man muss die lesenMakefile
um zu sehen, welche Variable(n) verwendet werden (und auch, ob es sich um C++ oder C handelt). Ich bin gerade auf diese Antwort gestoßen, als ich ein Makefile verwendet habe, das überprüft, ob Sie es verwendenGCC
(z.B,make GCC=gcc-6
) und druckt eine Fehlermeldung, in der Sie aufgefordert werden, stattdessen zu verwendenHOST_COMPILER
(z.B,make HOST_COMPILER=g++-6
vs meine Vorgabe vong++
die neuere v7) (zu Ihrer Information, es sind die Nvidia CUDA-Beispiele).– michael
19. September 2018 um 2:52 Uhr
-
Dies ist eine schreckliche Antwort, sie deckt nicht ab, was in “meinem Compiler” stehen soll
– Das negative
30. Juli 2019 um 15:20 Uhr
Sie können die Umgebungsvariablen festlegen CC
und CXX
, die zum Kompilieren von C- bzw. C++-Dateien verwendet werden. Standardmäßig verwenden sie die Werte cc
und g++
-
Wenn das Makefile geschrieben wurde, um CC und CCX zu verwenden
– anon
3. Juni 2010 um 19:50 Uhr
-
Die Einstellung der Umgebung überschreibt keine expliziten Werte in einem Makefile, es sei denn, Sie verwenden ‘-e’, um make anzuweisen, dies zuzulassen. Es überschreibt jedoch die Standardeinstellungen – und höchstwahrscheinlich werden die Standardeinstellungen verwendet.
– Jonathan Leffler
3. Juni 2010 um 19:52 Uhr
Wenn das Makefile wie die meisten Makefiles geschrieben ist, dann verwendet es $(CC)
wenn es den C-Compiler aufrufen möchte. Das machen sowieso die eingebauten Regeln. Wenn Sie für diese Variable einen anderen Wert angeben, verwendet Make stattdessen diesen. Sie können einen neuen Wert in der Befehlszeile angeben:
make CC=/usr/bin/special-cc
Sie können dies auch beim Ausführen angeben configure
:
./configure CC=/usr/bin/special-cc
Das Konfigurationsskript wird die neue einbinden CC
value in das Makefile, das es generiert, so dass Sie es nicht brauchen manuell Bearbeiten Sie es, und Sie können einfach laufen make
von selbst danach (anstatt den Brauch zu geben CC
Wert jedes Mal auf der Befehlszeile).
beladenekante
Viele Makefiles verwenden ‘CC’, um den Compiler zu definieren. Wenn das bei Ihnen der Fall ist, können Sie diese Variable überschreiben mit
make CC='/usr/bin/gcc'
Verwenden Sie Variablen für den Namen des Compilerprogramms.
Übergeben Sie die neue Definition entweder an die make
verwenden oder sie vor dem Bau in die Umgebung stellen.
Makefile:
#!MAKE
suf=$(suffix $(src))
ifeq ($(suf), .c)
cc=gcc
else
ifeq ($(suf), .cpp)
cc=g++
endif
endif
all:
$(cc) $(src) -o $(src:$(suf)=.exe)
clean:
rm *.exe
.PHONY: all clean
Terminal:
$ make src=main.c