Das Linux machen Der Befehl wird verwendet, um Gruppen von Programmen und Dateien aus dem Quellcode zu erstellen und zu verwalten. Unter Linux ist es einer der von den Entwicklern am häufigsten verwendeten Befehle. Es unterstützt Entwickler bei der Installation und Kompilierung vieler Dienstprogramme vom Terminal aus. Darüber hinaus übernimmt es den Kompilierungsprozess der großen Projekte. Es spart Kompilierungszeit.
Das Hauptmotiv des Make-Befehls besteht darin, ein großes Programm in Teile zu zerlegen und zu prüfen, ob es neu kompiliert werden muss oder nicht. Außerdem erteilt es die notwendigen Befehle, um sie neu zu kompilieren.
In diesem Abschnitt verwenden wir C++-Programme, da die Programmiersprache C++ eine objektorientierte Sprache ist, Sie können jedoch jede auf Ihrem Computer installierte Sprache verwenden. Es ist nicht nur auf Programme beschränkt; Wir können damit auch andere Aufgaben beschreiben.
Wie funktioniert der Make-Befehl?
Der Befehl make akzeptiert Ziele als Argumente. Diese Argumente werden in „Makefile“ angegeben. Das Makefile enthält die Ziele sowie zugehörige Aktionen im Zusammenhang mit diesen Zielen.
Wenn wir den Befehl „make“ ausführen, sucht er nach dem Makefile und scannt es, um das Ziel zu finden und auf seine Abhängigkeiten zuzugreifen. Wenn keine Abhängigkeiten angegeben sind, wird nach der Abhängigkeit gesucht und diese erstellt. Es wird das Hauptziel erstellen, nachdem die Abhängigkeiten erstellt wurden.
Wenn wir beispielsweise nur eine Quelldatei ändern möchten und den Befehl make ausführen; Dadurch wird also nur die Objektdatei kompiliert, die mit dieser Quelldatei verbunden ist. Dies spart viel Zeit bei der endgültigen Zusammenstellung des Projekts.
Was ist Makefile?
Der Befehl make ruft die Ausführung des Makefiles auf. Es handelt sich um eine spezielle Datei, die die Shell-Befehle enthält, die wir zur Verwaltung des Projekts erstellen. Das Makefile enthält Ziele und Befehle zur Ausführung. Es ist nicht erlaubt, mehr als ein Makefile zu erstellen. Es empfiehlt sich, dafür ein eigenes Verzeichnis anzulegen.
Es verfolgt die zuletzt verwendeten Dateien. Aktualisieren Sie daher nur die Dateien, die erforderlich sind. Wenn wir ein großes Programm mit vielen Quelldateien haben, müssen wir alle abhängigen Dateien neu kompilieren. Es kann also ein äußerst zeitaufwändiger Prozess sein.
Das Makefile enthält eine Liste von Standards. Diese Standards sind hilfreich, damit das System versteht, welchen Befehl wir ausführen möchten. Diese Standards bestehen aus zwei Teilen und werden durch eine neue Zeile getrennt. Die erste Zeile ist die Abhängigkeitslinie, und die nachfolgenden Zeilen werden als betrachtet Aktionen oder Befehle S. Die Befehle werden in der neuen Zeile durch einen Tabulator getrennt.
Der Abhängigkeiten Geben Sie die Beziehung jeder Datei zu den Quelldateien an. Und das Ziel ist eine ausführbare Datei und wird nach der Ausführung des Befehls make erstellt.
Optionen
Der Make-Befehl ermöglicht verschiedene Optionen, um es spezifischer zu machen. Einige wichtige Optionen sind wie folgt:
make -p -f/dev/null.
Lassen Sie uns einige Beispiele des Befehls make verstehen. Wir werden die grundlegende Verwendung von Makefile sehen und außerdem einige C++-Programme und ein Makefile erstellen. Wir werden einige Operationen an ihnen durchführen, um den Befehl make besser zu verstehen.
Java-Visualizer
Grundlegende Verwendung des Make-Befehls
Lassen Sie uns die grundlegende Verwendung des Befehls „make“ verstehen, und es kann Ihnen helfen, zu verstehen, wie er funktioniert.
Erstellen Sie ein Verzeichnis „Projekt“ und ändern Sie das Verzeichnis dorthin. Betrachten Sie die folgenden Befehle:
Java do while-Beispiel
mkdir project cd project
Erstellen Sie nun eine 'Makefile' mit folgendem Inhalt für das erste Programm:
say_hello: echo 'Hello World!'
Aus der obigen Datei geht hervor, dass say_hello ein Ziel ist, das sich in jeder Programmiersprache wie eine Funktion verhält, und echo wird als Aktion betrachtet. Es muss daran erinnert werden, dass die Aktion mit a geschrieben werden sollte TAB. Das Ziel und die Aktion bilden zusammen eine Regel für das Makefile. Führen Sie nun den Make-Befehl wie folgt aus:
Betrachten Sie die folgende Ausgabe:
Aus der obigen Ausgabe können wir sehen, dass die Echo-Operation selbst angezeigt wird. Wenn wir den Echo-Befehl nicht in der Ausgabe anzeigen möchten, führen Sie den Echo-Befehl beginnend mit aus '@' Symbol. Um das Echo zu unterdrücken, aktualisieren Sie den Inhalt des Makefiles wie folgt:
say_hello: @echo 'Hello World!'
Betrachten Sie die folgende Ausgabe:
Ein Ziel kann eine Binärdatei sein, die von den Aktionen abhängt.
Fügen wir noch ein paar weitere Ziele hinzu, z. B. „generate“ und „list“ im Makefile. Aktualisieren Sie das Makefile wie folgt:
say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
Wenn wir den Befehl „make“ ausführen, wird nur das erste Ziel ausgeführt, da es das Standardziel des Makefiles ist. Betrachten Sie die folgende Ausgabe:
Wir können das Standardziel ändern, indem wir den folgenden Inhalt in unser Makefile einfügen:
.DEFAULT_GOAL := generate
Fügen Sie es wie folgt in die erste Zeile der Datei ein:
Das obige Makefile betrachtet „generieren“ als Standardziel. Führen Sie den Befehl „make“ aus und die Ausgabe lautet wie folgt:
Die Option DEFAULT GOAL führt nur ein Ziel aus, um mehr als ein Ziel anzugeben, um alle Optionen zu verwenden. Um mehr als ein Ziel anzugeben, aktualisieren Sie die erste Zeile des Makefiles wie folgt:
all: say_hello generate
Es wird das angegebene Ziel ausführen. Betrachten Sie die folgende Ausgabe:
Es gibt eine weitere Option, die es uns ermöglicht, alle Ziele auszuführen. Wenn wir alle Ziele des Makefiles ausführen möchten, aktualisieren Sie die Datei wie folgt:
.PHONY: all say_hello generate list say_hello: @echo 'Hello World!' generate: @echo 'Creating files' touch file-{1..5}.txt list: @echo 'Listing files' ls
Die obige Datei führt alle angegebenen Ziele aus. Führen Sie den Befehl make aus und betrachten Sie die folgende Ausgabe:
Erweiterte Verwendung des Befehls make
Erstellen wir ein C++-Projekt mit den Dateien main.cpp, function1.cpp, function2.cpp und einer Abhängigkeitsdatei function.h.
Der Code der Dateien lautet wie folgt:
Vererbung Java
main.cpp:
#include #include 'functions.h' int main() { print_hello(); std::cout<< std::endl; std::cout<< 'The factorial of 5 is' << factorial(5) << std:: endl; return 0; }
function1.cpp:
#include 'functions.h' int factorial(int n) { if(n!=1) { return (n * factorial(n-1)); } else return 1; }
function2.cpp:
#include #include 'functions.h' void print_hello() { std::cout << 'Hello World'; }
Funktionen.h:
void print_hello(); int factorial (int n);
Erstellen Sie nun eine ausführbare Datei des oben genannten Projekts, indem Sie den folgenden Befehl ausführen:
g++ main.cpp function1.cpp function2.cpp -o hello
Der obige Befehl erstellt eine ausführbare Datei 'Hallo' der Dateien main.cpp, function1.cpp und function2.cpp.
Betrachten Sie die folgende Ausgabe:
Wenn die obige Ausgabe erfolgreich ausgeführt wird, wird keine Ausgabe ausgegeben.
Führen wir dieselbe Aufgabe mithilfe des Makefiles aus.
Erstellen Sie eine Datei als Makefile und fügen Sie den folgenden Code ein.
all: g++ main.cpp function1.cpp function2.cpp -o hello
Das Schlüsselwort all wird für das Ziel verwendet. Geben Sie in der neuen Zeile denselben Befehl mit einem TAB wie oben ein, um die Operation anzugeben. Speicher die Datei. Betrachten Sie die folgende Datei:
Führen Sie zum Betrieb den Befehl wie folgt aus:
Welche Monate sind im dritten Quartal?
make
Der obige Befehl erstellt eine ausführbare Datei „Hallo“ der angegebenen Dateien. Betrachten Sie die folgende Ausgabe:
Fügen wir Makefile weitere Aufgaben hinzu. Fügen Sie eine Aufgabe hinzu 'kompilieren' wie folgt:
all: compile: g++ main.cpp function1.cpp function2.cpp -o hello
Um die Aufgabe auszuführen kompilieren, Führen Sie den folgenden Befehl aus:
make compile
Der obige Befehl führt die Kompilierungsaufgabe aus. Betrachten Sie die folgende Ausgabe:
Lassen Sie uns noch einige weitere Aufgaben für unser Makefile ausführen.
Aktualisieren Sie das Makefile wie folgt:
all: hello hello: main.o function1.o function2.o g++ main.o function1.o function2.o -o hello main.o: main.cpp g++ -c main.cpp function1.o: function1.cpp g++ -c function1.cpp function2.o: function2.cpp g++ -c function2.cpp clean: rm -rf *o hello
Aus dem obigen Makefile haben wir drei Objekte als main.o, function1.o und function2.o erstellt. Darüber hinaus haben wir die Abhängigkeiten für die Ziele main.o, function1.o und function2.o jeweils als main.cpp, function1.cpp und function2.cpp bereitgestellt. Alle Ziele führen darin die angegebenen Aufgaben aus. Wir haben außerdem ein sauberes Ziel angegeben, um alle Abhängigkeiten zu bereinigen und die ausführbare Datei zu entfernen.
Führen Sie nun den Befehl „make all“ aus, um unser neues Makefile auszuführen.
make all
Betrachten Sie die folgende Ausgabe:
Aus der obigen Ausgabe können wir ersehen, dass der Befehl zuerst main.o, function1.o bzw. function2.o ausgeführt hat. Es erstellt die ausführbare Datei und die Objektdatei der angegebenen Dateien. Das saubere Ziel wird nicht ausgeführt, da wir es in „Hallo“ nicht angegeben haben. Betrachten Sie die folgenden Dateien:
Der Make-Befehl hat einen unkomplizierten Arbeitsprozess. Es führte die Option „Alle“ aus und ging zu „Hallo“. Nach der Ausführung von „hello“ wird das Ziel in der angegebenen Reihenfolge gelesen. Es durchsuchte jedes Ziel und seine Abhängigkeiten und führte sie der Reihe nach aus.
Um die Objekte und die ausführbare Datei zu entfernen, führen Sie die Bereinigungsaufgabe aus. Um die Bereinigungsaufgabe auszuführen, führen Sie den Befehl wie folgt aus:
make clean
Betrachten Sie die folgende Ausgabe:
Der obige Befehl entfernt alle Objekte und ausführbaren Dateien. Sehen Sie sich den folgenden Ausschnitt des Verzeichnisses an:
Auf dem obigen Bild können wir sehen, dass wir unser Verzeichnis bereinigt haben.
Variablen im Make-Befehl
Wir können die Variablen in unserem Makefile definieren. Um die Variablen zu definieren, verwenden Sie die '=' Operator. Wenn wir beispielsweise eine Variable A erstellen und ihr einen Befehl gcc zuweisen möchten, weisen Sie ihn wie folgt zu:
Java und Swing
A=g++
Verwenden Sie es wie folgt in unserem Makefile:
hello: hello.cpp ${A} hello.cpp -o hello
Es wird an das Terminal übergeben als:
g++ hello.cpp -o hello
Wir können $(A) anstelle von ${A} verwenden, da beide vom Skript gleich behandelt werden.
Kommentare im Makefile
Um einen Kommentar zum Makefile hinzuzufügen, verwenden Sie die '#' Symbol. Um beispielsweise einen Kommentar im Kompilierungsabschnitt hinzuzufügen, fügen Sie ihn als hinzu '# Dadurch wird das Programm kompiliert .' Kommentare werden vom Compiler ignoriert.