Verwenden von make aus Windows PowerShell

Unter Linux werden häufig Projektquellen mit Makefile ' s. Makefiles enthalten Anweisungen zum Erstellen dieser Projekte mit dem Befehl make. Ich bin derzeit gezwungen, Windows zu verwenden, und um dieses Betriebssystem verwenden zu können, habe ich die "PowerShell" konfiguriert und erweitert (durch die Installation einiger zusätzlicher Programme wie vim oder svn, ein Modul namens PSReadLine, Schreiben eines PowerShell-Profils usw.).

Ich konnte jedoch nicht finden, ob es möglich ist, make in PowerShell. Ich bin mir bewusst, dass ich auch Programme installieren muss, die make aufrufen, wie zum Beispiel g++ oder pdflatex, aber das wird für später sein. Im Moment möchte ich make selbst überhaupt zum Laufen bringen.

Ein bisschen Forschung ergab zwei Möglichkeiten:

  1. Die akzeptierte Antwort auf diese sehr ähnliche Frage: Wie benutzt man Makefiles unter Windows, schlägt vor, Cygwin zu verwenden. Das ist eine Möglichkeit, Cygwin ist großartig, aber da ich beschlossen habe, PowerShell eine zu geben vielleicht würde ich gerne wissen, ob dies auch mit PowerShell möglich ist, nicht mit Cygwin. Daher ist diese Frage kein Duplikat, da es bei dieser anderen Frage um einige Möglichkeiten ging, make in Windows zu verwenden, während ich insbesondere nach PowerShell frage.

  2. Es gibt einen make - Klon für den PowerShell-Klon namens poshmake, aber die Syntax der Poshmake-Dateien unterscheidet sich von den üblichen Makefiles, was ein No-Go ist. Ich will ein wahres make, da die Pflege von zwei Versionen von Makefiles für alle Projekte, die ich herumliegen habe, keine Option ist.

Also: Ist es möglich, GNU make zu installieren, das die Syntax typischer Makefiles versteht, sodass ich make aus PowerShell aufrufen kann?

Author: Community, 2014-09-08

3 answers

Schauen Sie sich "Make for Windows" an. Nach der Installation rufen Sie einfach "make" von CMD oder PowerShell auf.

 20
Author: Leo Chapiro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-09-08 15:16:10

Installiere Make für Windows von GNU Make und füge hinzu C:\Program Dateien (x86)\GnuWin32\bin zu Ihrem Pfad Pfad Ubication Pfad bearbeiten

 2
Author: Víctor Alejandro Sagal Muñoz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-06-16 06:31:41

Da dies das erste Ergebnis ist, das ich bei Bing erhalte, wenn ich nach "PowerShell make" suche, erstelle ich diese Antwort, um festzustellen, dass die offizielle GNU-Seite und die Spiegel haben Make für Windows source als Teil des tar.gz-Datei, die ab Januar 2020 auf Version 4.3 aktualisiert wurde. Die bereitgestellten Links zu Sourceforge in anderen Antworten sind immer noch die Version 3.8.1 von 2006. Ich bin mit den Änderungen in 4 nicht vertraut.x, da ich make nicht genug benutze, aber denke, es ist gut, dies zu behalten frage aktualisiert Wenn jemand anderes es unweigerlich findet, wird es nicht verwirrt.

Die Dateien auf der GNU-Seite enthalten jedoch keine Binärdateien, daher müssen Sie make yourself mit GCC oder MSVC erstellen (was einfach ist, nur eine einzige ./ build_w32.bat (mit einigen Flags abhängig von Ihrem Compiler), die in der README beschrieben ist.W32-Datei. Dann müssen Sie den resultierenden Ordner nehmen, an der gewünschten Stelle speichern und zum Pfad hinzufügen oder einen Alias in PowerShell erstellen, um die exe auszuführen.

Nur vorgefertigte Binärdatei, die ich finden konnte, wird auf Chocolatey gehostet. Die Pakete Winget und AppGet (die Website scheint zum Zeitpunkt des Posts noch zu laufen, obwohl sie heruntergefahren werden sollte) sind immer noch die alten 3.8.1-Versionen. Wenn es andere binäre Speicherorte gibt, lassen Sie es mich bitte in den Kommentaren wissen/posten/bearbeiten Sie diese Antwort.

 2
Author: coocooman3,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-12 02:24:01