make.exe?

... komplette Frage anzeigen

1 Antwort

Makefiles sind sehr sehr mächtig, wenn man richtig damit umgehen kann.

An deiner Stelle würde ich mir die gesamte Dokumentation von gmake durchlesen. Fang einfach ganz am Anfang an, und arbeite dich nach hinten durch:

https://www.gnu.org/software/make/manual/html_node/index.html

Vor ca. einem halben Jahr habe ich mal als Proof-Of-Concept einen C-Interpreter in reinem GNU-make geschrieben, ohne dabei auf externe Tools o. Skripte zugreifen zu müssen und Einfachst-Progrämmchen liefen tadellos, ohne dass man C-Quelltext kompilieren musste. (Dinge wie $(shell xyz) kamen GAR NICHT zum Einsatz!)

Ich habe natürlich nicht die gesamte Standardbibliothek und jedes Kleinstfeature unterstützt (nicht mal Ansatzweise!), bin aber an keinem Punkt an irgendwelche Grenzen gestoßen. Sogar Integer- und Gleitpunktarithmetik habe ich ziemlich umfangreich hinbekommen. (Mit gefühlt einer Million geschachtelter $(call xyz) Aufrufe ... aber alle sehr übersichtlich nicht länger als eine einzige Zeile!)

Ursprünglich war es eigentlich nur mein Plan, dass das Makefile selbstständig Abhängigkeiten zu Headern und auch Bibliotheken auflösen kann, sozusagen als Fallback-Lösung, falls der Compiler kein "-M" Flag kennen sollte. Irgendwie ist das ganze dann (aus Spieltrieb) in einen ziemlich umfangreichen C-Interpreter mutiert.

Ich muss dazu sagen, dass ich sehr viele Dinge gelöst habe, die zuvor bei einer Recherche auf Stackoverflow gemeinhin als unmöglich galten. (Aber das kennt man ja auch von anderen Gebieten, wenn man öfter mal am Rechner "spielt".) Man kann also mit Makefiles prima hacken! :)

Ich schreibe das nur, um mal zu zeigen, was mit GMake so alles möglich ist, da immer wieder viele Leute behaupten, make sei veraltet oder unhandlich. Das gleiche gilt für PMake unter den BSDs: Komplett anderer Ansatz als gmake, aber nicht minder leistungsstark. :)

Wenn man sich auch noch dazu überwinden kann, von ein paar simplen Bourne-Shell-Skripten abhängig zu sein, gibt es nichts, was man damit nicht sehr komfortabel erledigen kann. Bei meinen Projekten achte ich immer sehr strikt auf möglichst exzessiv WENIGE Abhängigkeiten. Meist reich ein Compiler, eine sh-kompatible Shell, irgendein Make und eine Hand voll der gängigsten Tools (echo, cat, head, which, ...).

Naja, lange Rede kurzer Sinn: Besorg dir gmake für deine Plattform, und lies die entsprechenden Handbücher! Das ist dann u. U. mächtiger als Ant & Co. :)

Und noch eine kleine Randbemerkung, die viele zwar nicht teilen werden, die hier aber gerade sehr gut passt: Meiner Meinung nach ist der Build-Prozess und eine umfangreiche Kenntnis der Tool-Chain wichtiger, als besonders gut in einer bestimmten Programmiersprache programmieren zu können!

Viele Leute beschweren sich zum Beispiel, dass es für C++ keine gute kostenlose Alternative zu Javas CleanCode, PMD oder CheckStyle gibt. Dabei enthalten alle großen und gängigen Compiler (GCC, Clang, ICC, ...) Funktionen, welche die statische Code Analyse der Java-Pendants übertreffen, man muss sie nur über Kommandozeilen-Argumente aktivieren! Um das zu wissen, muss man sich aber auch durch die Handbücher kämpfen und das dauert einige Tage.

Auf jeden Fall sehe ich immer wieder, dass Entwickler hoffnungslos verloren sind, wenn sie keinen Zugriff auf ihre Lieblings-IDE haben. Ich denke, man sollte wirklich auch mit den ganzen Tools unter der Haube umgehen können. Mit dem Abfeuern von Kommandos an den Debugger ist man tausend mal Stärker, als in der GUI Breakpoints zu klicken.

Sorry, bin vom Thema abgewichen und hab den Rahmen gesprengt ... beschäftige dich auf jeden Fall mit make! Es wird dir nur Vorteile bringen! :)

Viel Spaß! :)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von LuckyChicken91
04.10.2016, 15:33

Ich brauche für Windows bei mir MinGW damit ich meine .c Programme zu einer .exe machen kann und diese dann starten kann allerdings will ich meine .c Programme auch ohne Eclipse konvertieren können. Deshalb brauche ich die make.exe die ich aber nicht finde. Aber irgendwie muss es Eclipse ja auch machen.

0

Was möchtest Du wissen?