Kennt jemand ein Werkzeug, das ein Makefile erzeugt, indem es ein Verzeichnis nach Quelldateien scannt?
Es kann naiv sein:
Sie können ein Makefile
schreiben, das dies für Sie tut:
Platziere das einfach im Root-Verzeichnis deiner Quellhierarchie und führe make
aus (du brauchst GNU Make ) damit dies funktioniert).
(Beachte, dass ich nicht fließend in Makefile
ish bin, also kann das vielleicht einfacher gemacht werden.)
CMake erledigt das und erstellt sogar Makefiles und Visual Studio-Projekte. Ссылка
Sie müssen lediglich eine CMakeLists.txt-Datei mit den folgenden Zeilen erstellen:
%Vor%Gehe dann in ein sauberes Verzeichnis und tippe:
%Vor%Das wird Makefiles in diesem sauberen Build-Verzeichnis erstellen.
Das würde ich für ein einfaches Projekt verwenden:
%Vor%Die einzige Einschränkung besteht darin, dass Sie eine ausführbare Datei namens myApp erstellen. Dann sollte eine der Quelldateien myApp.cpp genannt werden (wo ich main).
Es gibt ein sehr altes Skript namens 'makedepend', mit dem man sehr einfache Makefiles erstellt hat. Ich bin seitdem für fast alles zu CMake gewechselt.
Hier ist der Wiki-Artikel Ссылка , notieren Sie sich die Liste der Alternativen unten, einschließlich depcomp in automake, und die -M Flagge in gcc.
EDIT: Wie jemand in einer anderen Frage auf mich hingewiesen hat, erzeugt gcc -MM *.cpp > Makefile
ein ziemlich nettes einfaches Makefile. Sie müssen nur Ihren CPPFLAGS und eine Regel für die Erstellung der gesamten Binärdatei ... voranstellen, die das folgende Format hat:
- keine Notwendigkeit, externe Abhängigkeiten zu erkennen
- Verwenden Sie die Standardeinstellungen für Compiler / Linker
Warum Skript dann? Vorausgesetzt, alle Ihre Projektquelldateien sind *.cpp
und im aktuellen Verzeichnis:
Das Makefile würde alle Quelldateien mit Standard-Compiler / Linker-Einstellungen in einer ausführbaren Datei erstellen, die nach dem Namen des aktuellen Verzeichnisses benannt ist.
Ansonsten empfehle ich den Leuten, SCons zu probieren, anstatt viel einfacher und intuitiver zu machen. Zusätzlicher Bonus, dass es keine Notwendigkeit gibt, manuell Code clean
-Ziele zu codieren, Source / Header-Abhängigkeitsprüfung ist eingebaut, es ist nativ rekursiv und unterstützt korrekte Bibliotheken.
Wie in der verknüpften Diskussion , HWUT ist ein Werkzeug, das kann hübsche Makefiles generieren, nach Abhängigkeiten suchen und Dateien in Verzeichnisse einfügen, die Sie ihm mitteilen. Unter Windows müssen Sie MinGW und Ctags installieren. Unter Linux sind gcc und ctags am wahrscheinlichsten vorhanden. Es ist OpenSource und frei zu benutzen.
Insbesondere, wenn Unit-Tests für einige bereits vorhandene Module eines größeren Projekts mit schlechter Kohäsion generiert werden, spart Ihnen dieser features leicht Stunden oder sogar Tage.