Makefiles, wie kann ich Sie nutzen?
^ Dies ist keine doppelte Frage ^
Aktualisiert:
Ich bin ziemlich neu in der Programmierung und ich habe erst jetzt gekommen, nur über makefiles.
Habe ich heruntergeladen ein paar tutorials und Quellcode aus einer Vielzahl von Orten im Laufe der letzten paar Monate, die ich bis jetzt habe nur mit VS und Lösungen wurden, Sie zu vermeiden.
Ich habe gesehen, mehrere Methoden der Verwendung von Makefiles auf google, aber Sie alle in Ihrer Komplexität unterscheiden...
Ich habe keine Ahnung über Sie oder, wie Sie zu verwenden sind. Danke.
Bearbeiten (neu formuliert):
Zusammenzufassen, aufgrund der offensichtlichen Verwirrung, meine Fragen sind (und immer waren):
1) Is there a good tutorial that comes recommended or is it easy to get started with Makefiles?
2) How do you launch and run an existing Makefile? And,
3) Do Makefiles hold any vital data about the program or could I just use the `.h` and `.cpp` files that come with them in a new solution built from scratch?
- mögliche Duplikate von Wie zu ausführen makefile in Windows
- Eine bessere Frage wäre: Warum willst du das verwenden des raw-Makefiles? Ist, dass eine bestimmte Anforderung von dir?
- Tut mir Leid, wenn es ein Duplikat ist. Ich habe eine Suche, zunächst aber nichts gefunden, was relevant ist. Ähm... Ok, Es ist nur ein paar tutorials und Beispiele kommen mit Makefiles, sondern als eine Lösung, so Frage ich mich, wie Sie zu benutzen, so konnte ich Sie ausführen kann. Vielen Dank für die Veröffentlichung.
- Wenn Sie cross-Plattform-Projekte, die etwas verständlich. Wenn Sie sind Windows-only-Projekte, die ich dann nicht bekommen, was wesentliche Vorteil ist, dass die Autoren sich mit Makefiles im Vergleich zu VS-Projekte und-Lösungen. Kannst du ein Beispiel?
- Beachten Sie, dass in vielen Anfänger-Fällen, brauchen Sie nicht zu schreiben jeden Makefiles an alle: GNU make oder nmake (mit Visual Studio) default-Regeln. Also, wenn Sie ein 'a.cpp' Datei im aktuellen Verzeichnis, versuchen Sie es mit
make a
odernmake a.exe
oder ähnliches zu bauen. - Ein großer Vorteil von Makefiles: Sie lernen über die Werkzeuge, die Visual Studio-Projekt-Dateien neigen dazu, sich zu verstecken.
- Sicher, aber Sie können genauso gut den Blick in das XML-VS erzeugt und Sie bekommen eine Menge von details auch. Ich bin ein Linux-Kerl, und verwenden Sie
make
fast auf einer täglichen basis. Aber ernsthaft, wenn Sie habe so etwas wieninja
... vor allem in Verbindung mit CMake. Um allerdings fair zu sein, lernen CMake nicht, dass viel Spaß entweder. - Ich habe keine Ahnung, von Vorteil. Deshalb habe ich beschlossen, zu versuchen und verwenden Sie für die erste Zeit. Es ist überraschend, wie viele Menschen Sie im source-code. Ich würde eher die VS-Lösungen persönlich aber manchmal finde ich richtig gute Beispiele, nur finden kann ich Sie nicht benutzen, da ich nicht weiß, wie.
- Auch, können wir die Verknüpfung aufheben, die "windows" - Frage? Ich habe es gerade gelesen und es beantwortet nicht meine zwei Fragen, schlägt Sie vor, eine Sammlung von GNU-Dienstprogramme, die nicht mit vorhandenen makefiles oder wie, um loszulegen. Es ist irrelevant. Ich würde gerne hören, Völker Antworten, nicht Sie davon ausgehen, daß es schon einen hat... Danke.
- Ahh, ich vergaß. Einige Leute schreiben Sachen für Linux und andere UNIX-Derivate vorschlagen Zusammenstellung Ihrer
Makefile
Projekt mit MSYS, das ist Teil des MinGW - Cygwin ist auch eine alternative. Lassen Sie Sie kompilieren das ganze Zeug unverändert, d.h. Sie installieren und MinGW MSYS, öffnen Sie eine MSYS-Konsole, und im Grunde konfigurieren und kompilieren Sie das Projekt, wie auf Linux. Ich habe es immer gehasst, dass ... - mögliche Duplikate von Wie man EINFACHE C++ - Makefile?
- Ich möchte nicht wissen, wie zu machen... ich will wissen, wie Sie zu verwenden, vorausgesetzt Sie wurden ein paar.
- Ich weiß nicht wirklich verstehen, "tun
Makefile
s halten Sie alle wichtigen Daten über das Programm" Frage: genauer gesagt, Ihre Formulierung ist seltsam und wahrscheinlich falsch.Makefile
-s beschreiben den build-Prozess. - Es ist eine einfach Frage, ich denke mal, dass soll "Nein" beantwortet werden, basierend auf, was du sagst. Ich habe ein Beispiel mit header-Dateien Klassen-und makefiles. Ich war besorgt, dass die makefiles enthalten etwas entscheidend, um mit dem Programm oder wenn ich in der Lage wäre zu einfach importieren Sie die
.h
. und.cpp
in eine neue Lösung und entsorgen Sie den makefiles. Ich denke, dass keine Erfahrung mit oder wissen über Sie (wie geschrieben in meiner Frage) rechtfertigen kann, meine Naivität. Ich bin versucht, herauszufinden, wie Sie verwendet werden können/gestartet/ausgeführt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Frage, Wann
Makefile
ist eine Frage der Stellungnahme. Sicherlich können Sie einige alternative generator (wie z.B. omake, aber es gibt viele andere). Sie wollen sicher einige Gebäude system, sobald Sie mehr als eine übersetzungseinheit in Ihrer software. Wenn Sie mitmake
dieMakefile
beschreibt den build-Prozess durch Detaillierung der Abhängigkeiten. Oft bauen Sie Programm ist gerade durch die einfachemake
Befehl.Einige utilities, z.B. cmake, qmake, automake, etc... sind
Makefile
Generatoren. Sie erzeugen ein KomplexesMakefile
ist in der Regel nicht Verwendung aller Funktionen von GNU-make.Wenn Sie entscheiden, zu verwenden
make
empfehle ich die Verwendung von GNU make (dies ist auch eine Meinung). In diesem Fall, Lesen Sie sorgfältig die Dokumentation, die finde ich sehr gut lesbar und enthält eine gute Anleitung. Vergessen Sie nicht, verwenden Sie eine aktuelle version: die version 4.0 der GNU-make-erschien im Oktober 2013 und bringt viele interessante neue features (plugins, und vor allem Erweiterbarkeit thru guile) whih interessant sind für komplexe builds.Debuggen von komplexen
Makefile
-s erwägen, remake (insbesondereremake -x
).In der Praxis GNU make hat eine Menge von built-in Regeln. Sie bekommen Sie mit
make -p
; so verwenden Sie Sie.Sie können auch wählen, um code für die POSIX -
make
- Dienstprogramm (das ist ein standard - Spezifikation, aber weniger mächtig als GNU make, die konfiguriert werden können, um die Folgen der POSIX-Spezifikation).Wie code einen
Makefile
ist eine Frage des Geschmacks, und der software-Komplexität. Wenn Sie 2 oder 3*.cc
- Dateien mit einem einzigen.h
gemeinsamen header, die Sie nicht möchten, dass alle ausgefallenen tricks (z.B. automatische Abhängigkeiten, als von GCC undmake
), die es Wert sind, mit auf eine software, die viele Hunderte source-Dateien (und manchmal C++ - source-code generiert wird, so dass das build-system muss wissen, dass).Hier ein kleines GNU
Makefile
um Ihnen zu helfen:Ich nicht behaupten, es ist ein perfektes Beispiel (ist es nicht). Seien Sie vorsichtig, tabellierungen sind bedeutsam für
make
und ich bin nicht in der Lage sind, geben Sie Sie oben. Verwenden Siemake all
(oder nurmake
) bauen Ihr Programm, undmake clean
zu entfernen, in nicht-Quelltext-Dateien.Aus unerfindlichen Gründen, manchmal
Makefile
generiert werden können, mit autotools oder cmake. Für einfache Programme, ist es vielleicht nicht der Mühe Wert, zu lernen, wie Sie zu verwenden sind.Gibt es einige wenige Fälle, wenn GNU make ist nicht sinnvoll oder angemessen ist: in SCHMELZEN ich fast aufgegeben, es zu benutzen (indem Sie einige autogen generierten shell-Skript aus), weil es ist eine Bootstrap-Sprache, wo ein Satz von C++ - Dateien generiert sich aus einer Reihe von SCHMELZEN Dateien, so dass Sie mehrere, um mehrere quasi-zirkuläre Abhängigkeit Verhältnis. Wahrscheinlich mit einem GUILE Erweiterung hätte viel geholfen. Aber solche Albtraum-Situationen sind selten.
PS: antwortete ich, als Linux-user; weiß nicht, was gilt -oder auch nicht - auf Windows, die ich nie verwenden. Siehe auch diese Hinweise über C-oder C++ - Programmierung unter Linux.
PS2: Paul Evans' Antwort von Bedeutung: schreiben Sie nicht Ihre eigenen
Makefile
wird, kopieren Sie einige vorhandene an Ihre Bedürfnisse anzupassen.Wenn Sie sich Fragen, für ein gutes tutorial, dann denke ich, diese eine ist gut! Sie können ganz Folgen. Ich lernte die make-Datei, indem Sie es.
Ist das grundlegende Konzept für den Erfolg, wenn Sie Rollen Sie Ihre eigenen
makefile
's ist nicht! Immer schnappen Sie sich einen ähnlichen, einfachen, arbeitenmakefile
als Vorlage und verändern Sie es zu Ihrem eigenen zu bauen. Erst nach Erhalt dieser arbeiten, können Sie suchen nach Möglichkeiten, es zu verbessern, damit es mehr generische etc durch eifriges Lesen und studieren. Dann, eines Tages vielleicht in die weit, weit Zukunft, wo können Sie tatsächlich schreiben Sie einemakefile
von Grund auf. Aber nicht enttäuscht sein, wenn dieser Tag nie kommt.