Come installare e utilizzare "make" in Windows?


127

Sto seguendo le istruzioni di qualcuno di cui ho clonato il repository sulla mia macchina. Quello che voglio è semplice: essere in grado di utilizzare il makecomando come parte della configurazione dell'ambiente del codice. Ma sto usando Windows e ho cercato online solo per trovare un file make.exe da scaricare, un make-4.1.tar.gzfile da scaricare (non so cosa farne dopo) e cose sul download di MinGW (per GNU; ma dopo averlo installato non ho trovato alcuna menzione di "make").

Non voglio un compilatore GNU o cose correlate; Voglio solo usare "make" in Windows. Per favore dimmi cosa dovrei fare per ottenere ciò.

Grazie in anticipo!


1
makeÈ improbabile che la semplice installazione risolva il problema. Molti Makefile sono scritti per sistemi simili a Unix e richiedono l'installazione di una quantità significativa di utilità aggiuntive (incluso un compilatore supportato se il progetto prevede codice compilato) come Cygwin, o semplicemente il passaggio a una piattaforma come WSL se proprio non è possibile liberare te stesso da Windows completamente.
tripla

Risposte:


159

makeè un comando GNU quindi l'unico modo per ottenerlo su Windows è installare una versione di Windows come quella fornita da GNUWin32 . Oppure puoi installare MinGW e poi fare:

copy c:\MinGW\bin\mingw32-make.exe c:\MinGW\bin\make.exe

oppure crea un collegamento all'eseguibile effettivo, nel tuo PERCORSO. In questo caso, se aggiorni MinGW, il collegamento non viene eliminato:

mklink c:\bin\make.exe C:\MinGW\bin\mingw32-make.exe

Un'altra opzione sta usando Chocolatey . Per prima cosa devi installare questo gestore di pacchetti. Una volta installato è necessario installare simlpy make:

choco install make

Ultima opzione è l'installazione di un sottosistema di Windows per Linux (WSL) , in modo da avere una distribuzione Linux di vostra scelta incorporato in Windows 10, dove sarete in grado di installare make, gcce tutti gli strumenti necessari per i programmi di compilazione C.


1
Grazie! Non sapevo che make fosse un comando GNU. Ho controllato il percorso che hai fornito e ho trovato make.exe ma in un percorso simile (C: \ MinGW \ msys \ 1.0 \ bin \ make.exe). L'ho aggiunto alla variabile PATH e funziona!
Hashem Elezabi

2
Un modo più semplice sarebbe quella di creare un link simbolico: mklink C:\bin\make.exe C:\MinGW\bin\mingw32-make.exe. Quindi in futuro se aggiorni il tuo mingw, il collegamento sarebbe intatto.
kumarharsh

1
Usando solo MSYS2 non ero in grado di usare mklink. MSYS2 pacmanpuò installare un make pacman -S make, che non funziona correttamente . Invece mingw32-make.exeera già presente in msys64/mingw64/bin. Forse è stato spedito con gcc. Sono confuso perché non si chiama solo make.exe, però. L'ho appena copiato in make.exe.
Neonit

2
Forse è utile menzionare che Visual Studio fornisce la propria utilità "make" nmake, vedere il documento . È utilizzabile dal prompt dei comandi di VS, ma puoi ovviamente aggiungerlo al percorso. Si noti tuttavia che le funzionalità sono piuttosto limitate rispetto a GNU make, e la documentazione è quasi inesistente ...
jmon12

1
@notacorn tipo di, ma puoi accedere alle tue cartelle "Windows" da entrambi. Git bash con / c, WSL con / mnt / c.
Eduardo Yáñez Parareda

186

GNU make è disponibile su chocolatey.

  • Installa Chocolatey da qui .

  • Poi, choco install make.

Ora sarai in grado di usare Make su Windows.
Ho provato a usarlo su MinGW, ma dovrebbe funzionare anche su CMD.


31
La soluzione più semplice IMO del 2019.
mio stack trabocca il

C'è una ragione per cui questo non funzionerebbe in Bash? @vasantha
user3614648

Nota: potrebbe essere necessario impostare il proxy corretto utilizzandochoco config set proxy ADDRESS:PORT
weshouman

C'è anche uno scoop se non ti piace come chocolaty richiede una sessione di PowerShell di amministrazione: github.com/lukesampson/scoop/wiki/Chocolatey-Comparison
Jonathan Landrum

18

La risposta accettata è una cattiva idea in generale perché il creato manualmente make.exerimarrà in giro e può potenzialmente causare problemi imprevisti. In realtà interrompe RubyInstaller: https://github.com/oneclick/rubyinstaller2/issues/105

Un'alternativa è l'installazione di make tramite Chocolatey (come sottolineato da @Vasantha Ganesh K)

Un'altra alternativa è installare MSYS2 da Chocolatey e utilizzare makeda C:\tools\msys64\usr\bin. Se makenon è installato automaticamente con MSYS2 è necessario installarlo manualmente tramite pacman -S make(come sottolineato da @Thad Guidry e @Luke).


3
L'ho installato usando Chocolatey ma non c'è make.exe in C:\tools\msys64\usr\bin??
Rosdi Kasim

1
puoi trovare pacman in quella cartella, dopodiché usa il passaggio 3 di @thad
Luke

8

Se utilizzi Windows 10, è integrato nella funzionalità del sottosistema Linux. Avvia semplicemente un prompt di Bash (premi il tasto Windows, quindi digita bashe scegli "Bash su Ubuntu su Windows"), cdnella directory che desideri creare e digitamake .

FWIW, le unità di Windows si trovano in /mnt, ad esempio l' C:\unità è /mnt/cin Bash.

Se Bash non è disponibile dal menu Start, ecco le istruzioni per attivare quella funzionalità di Windows (solo Windows a 64 bit):

https://docs.microsoft.com/en-us/windows/wsl/install-win10


4
Il sottosistema Linux non è disponibile su Windows 10 Home.
Martin Gray il

Ho utilizzato Windows Subsystem per Linux (in particolare, Ubuntu 20.04 LTS, scaricato da Microsoft Store) sul mio Win10 Home ver.1809 negli ultimi due mesi senza alcun problema. Parlando di make, è disponibile per me direttamente dalla finestra del terminale di Windows senza nemmeno avviare bash prima. Neat.
Igor Soudakevitch il


5

Scarica make.exe dal loro sito ufficiale GnuWin32

  • Nella sessione di download, fai clic su Completa pacchetto, eccetto sorgenti .

  • Segui le istruzioni di installazione.

  • Una volta terminato, aggiungi il <installation directory>/bin/alla variabile PATH.

Ora sarai in grado di usare make in cmd.


Potresti aiutarmi a impostare la directory sulla variabile PATH.
shomit

3

Un'altra alternativa è se hai già installato minGW e hai aggiunto la cartella bin alla variabile d'ambiente Path, puoi usare "mingw32-make" invece di "make".

Puoi anche creare un collegamento simbolico da "make" a "mingw32-make", o copiare e cambiare il nome del file. Non consiglierei le opzioni prima, funzioneranno finché non apporterai modifiche su minGW.


Puoi specificare cosa intendi con "le opzioni prima"?
Jona

1

Potrei suggerire un approccio graduale.

  1. Visita GNUwin
  2. Scarica il programma di installazione
  3. Segui le istruzioni e installa GNUWin. È necessario prestare attenzione alla directory in cui viene installata l'applicazione. (Ne avrai bisogno in seguito1)
  4. Segui queste istruzioni e aggiungi make alle tue variabili d'ambiente. Come ti ho detto prima, ora è il momento di sapere dove è stata installata la tua applicazione. FYI: la directory predefinita èC:\Program Files (x86)\GnuWin32\ .
  5. Ora aggiorna il PATH per includere la directory bin del programma appena installato. Un tipico esempio di ciò che si potrebbe aggiungere al percorso è:...;C:\Program Files (x86)\GnuWin32\bin

0

Una soluzione che può essere utile se si desidera utilizzare l'emulatore della riga di comando cmder. È possibile installare chocately il programma di installazione del pacchetto. Per prima cosa installiamo chocately nel prompt dei comandi di Windows utilizzando la seguente riga:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
refreshenv

Dopo aver installato chocolatey, il comando choco può essere utilizzato per installare make. Una volta installato, sarà necessario aggiungere un alias a /cmder/config/user_aliases.cmd. La seguente riga dovrebbe essere aggiunta:

make="path_to_chocolatey\chocolatey\bin\make.exe" $*

Make opererà quindi nell'ambiente cmder.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.