Das ist verwirrend. Ich habe mein Makefile:
%Vor%es kompiliert zuerst erfolgreich, aber dann hörte es ohne Grund auf und das war die Ausgabe:
%Vor% Das Problem war, ich habe nicht einmal gesagt, dass es "c ++" im Makefile verwenden soll, sondern "g ++". Auch wenn ich CC_FLAGS
gelöscht habe, war -c
immer noch da. Es ist, als hätte Make einen eigenen Kopf.
Wenn ich make print
zum Ausdrucken meiner Variablen verwende, scheint es in Ordnung zu sein:
Jede Hilfe oder Beratung wird geschätzt. Danke!
Ich habe mein print
aktualisiert, um die erwartete Ausführung von compile zu drucken:
Ergebnis:
%Vor% Das beweist, dass make weiß, was ich wollte, aber wenn es erstellt wird, ist es völlig anders: c++
statt g++
?!
c++
ruft clang auf, das auf meinem System installiert ist.
Aber von der Kompilier-Befehlszeile sieht es aus, als würde Make versuchen Verwenden Sie die implizite Suffixregel und ignorieren Sie Ihre Musterregel.
Ich probierte .SUFFIXES:
und ja, es wurde eine No-Rule gefunden. Danke, ich werde gehen und das Handbuch konsultieren.
Wie ich im Kommentar gesagt habe, funktioniert es in meiner Umgebung (Mac OSX, GNU Make 3.81), so dass das Makefile, das Sie gepostet haben, unvollständig ist oder Sie eine andere Version von Make verwenden.
Aber von der Kompilierungsbefehlszeile sieht es so aus, als ob Make versucht, die implizite Suffixregel zu verwenden, und ignoriert Ihre Musterregel.
Sie können Make anweisen, Standardregeln zu ignorieren, indem Sie eine leere Liste von Suffixen angeben, damit Sie Ihr Problem weiter beheben können.
%Vor%