
Ich würde gerne wissen, ob es eine Möglichkeit gibt, die von make automatisch angewendeten Regeln zu ändern, wenn kein Makefile vorhanden ist. Um ein Beispiel zu geben: Wenn Sie make foo
in ein Verzeichnis schreiben, das eine Datei mit dem Namen enthält, foo.cpp
wird sie ausgeführt
g++ foo.cpp -o foo
, auch wenn sich keine Datei makefile
im Verzeichnis befindet.
Ich möchte sie meinen Bedürfnissen entsprechend ändern, beispielsweise in etwa wie folgt,
g++ foo.cpp -o foo --std=c++11 -W -O2 -I ....
aber auch neue Regeln für andere Erweiterungen wie .c, .java oder .tex hinzufügen.
Ich weiß, wie man die neuen Regeln definiert, aber ich weiß nicht, wo ich sie angeben soll, außer indem ich in jedem Verzeichnis eine Makefile erstelle. Ich nehme an, es gibt eine Datei, die alle diese integrierten Regeln enthält, aber ich konnte sie nicht finden oder weiß nicht, wie ich sie mit einer meiner eigenen Regeln überladen kann.
Ich arbeite hauptsächlich mit Mingw und Cygwin.
Antwort1
Entsprechend derHandbuchlautet die Regel eigentlich:
no wird automatisch aus
n.cc
,n.cpp
, odern.C
mit einem Rezept der Form ' ' erstellt. Wir empfehlen Ihnen , für C++-Quelldateien$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c
das Suffix ' ' anstelle von ' ' zu verwenden ..cc
.C
Sie müssen also entweder Ihre Umgebungsvariablen anpassen (beispielsweise in ~/.bashrc
) oder einfach ein Makefile erstellen, das diese Regel außer Kraft setzt.
Verwenden Sie es make -p
in einem Verzeichnis ohne Makefile, um alle Standardeinstellungen und integrierten Regeln zu erfahren.