Wie man Regeln ändert

390
Esteban Crespi

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 fooin ein Verzeichnis schreiben, das eine Datei enthält, die aufgerufen wird, wird foo.cppsie ausgeführt, g++ foo.cpp -o foo auch wenn makefiledas Verzeichnis keine enthält .

Ich möchte sie an meine Bedürfnisse g++ foo.cpp -o foo --std=c++11 -W -O2 -I .... anpassen, etwas sagen, 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 festlegen soll, außer in jedem Verzeichnis ein Makefile zu erstellen. Ich nehme an, es gibt eine Datei, die all diese eingebauten Regeln enthält, aber ich konnte sie nicht finden oder wie ich sie mit einer meiner eigenen überladen könnte.

Ich arbeite hauptsächlich mit Mingw und Cygwin.

0

1 Antwort auf die Frage

1
Daniel B

Gemäß dem Handbuch lautet die Regel eigentlich:

no wird automatisch aus n.cc, n.cppoder n.Cmit einem Rezept der Form ' $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c' gemacht. Wir empfehlen Ihnen, .ccanstelle von ' .C' das Suffix ' ' für C ++ - Quelldateien zu verwenden .

Das bedeutet, dass Sie entweder Ihre Umgebungsvariablen anpassen (zum Beispiel in ~/.bashrc) oder nur ein Makefile erstellen, das diese Regel überschreibt.

Verwenden Sie make -pin einem Verzeichnis ohne Makefile alle Standardwerte zu lernen und integrierten Regeln.

Danke für deine Antwort. Die Liste der Regeln ist sehr nützlich, da ich ihr Verhalten an meine Bedürfnisse anpassen kann. Ich bin immer noch überrascht, dass es keine Möglichkeit gibt, diese Regeln außer Kraft zu setzen oder sie zu entfernen. Esteban Crespi vor 7 Jahren 0
Sie können sie überschreiben. Ein Makefile verwenden. Sie können sie auch deaktivieren, indem Sie `--no-builtin-rules` verwenden. Es steht alles im Handbuch. Daniel B vor 7 Jahren 0