Hoe makefile compileren met MinGW?

Ik ben nieuw hierin. Ik wilde alleen vragen hoe je een makefile compileert. Ik gebruik de MinGW-compiler in C-taal. Moet ik al mijn bestanden opslaan in MinGW\bin? omdat mijn bestanden nu in een andere map staan.

Waardeer de hulp.


Antwoord 1, autoriteit 100%

Uittreksel uit http://www.mingw.org/wiki/FAQ:

Wat is het verschil tussen make en mingw32-make?

De “native” (d.w.z. MSVCRT-afhankelijk) port van make ontbreekt in sommige functionaliteit en heeft gewijzigde functionaliteit vanwege het ontbreken van POSIX op Win32. Er bestaat ook een versie van make in de MSYS-distributie die afhankelijk is van de MSYS-runtime. Deze poort werkt meer zoals make bedoeld was om te werken en geeft minder hoofdpijn tijdens de uitvoering. Op basis hiervan besloten de MinGW-ontwikkelaars/-beheerders/packagers dat het het beste zou zijn om de oorspronkelijke versie te hernoemen, zodat zowel de “native” versie en de MSYS-versie tegelijkertijd aanwezig zouden kunnen zijn zonder botsing van bestandsnamen.

Dus, kijk in de C:\MinGW\bin directory en controleer eerst welke make executable, geïnstalleerd is.(make.exe of mingw32-make.exe)

Voordat u MinGW gebruikt, moet u C:\MinGW\bin; naar de PATH-omgevingsvariabele met behulp van de instructies die worden vermeld op http://www.mingw.org/wiki/Getting_Started/

Cd dan naar je directory, waar je de makefile hebt en probeer mingw32-make.exe makefile.inof gewoon make.exe makefile.in(afhankelijk van uitvoerbare bestanden in C:\MinGW\bin).

Als je een op GUI gebaseerde oplossing wilt, installeer dan DevCPP IDE en maak het opnieuw.


Antwoord 2, autoriteit 22%

Je moet er actief voor kiezen om MSYS te installeren om make.exe te krijgen. U moet dus altijd ten minste (de native) mingw32-make.exe hebben als MinGW correct is geïnstalleerd. En als je MSYS hebt geïnstalleerd, heb je make.exe (waarschijnlijk in de MSYS-submap).

Houd er rekening mee dat voor veel projecten eerst een makefile moet worden gemaakt (bijvoorbeeld met behulp van een configuratiescript of automake .am-bestand) en voor deze stap is MSYS of cygwin vereist. Je vraagt je af waarom ze überhaupt de moeite hebben genomen om het oorspronkelijke merk te verspreiden.

Zodra je de makefile hebt, is het onduidelijk of het oorspronkelijke uitvoerbare bestand een ander padscheidingsteken vereist dan de MSYS make (slashes naar voren versus backslashes). Elke automatisch gegenereerde makefile heeft waarschijnlijk paden in Unix-stijl, ervan uitgaande dat de native make deze aankan, en de gecompileerde uitvoer zou hetzelfde moeten zijn.


Antwoord 3, autoriteit 7%

Ik heb MinGW en ook mingw32-make.exe in mijn prullenbak in de C:\MinGW\bin . dezelfde andere voeg ik bin-pad toe aan mijn Windows-pad. Daarna verander ik de naam in make.exe . Nu kan ik gewoon het commando “make” in mijn Makefile-richting schrijven en mijn Makefile op dezelfde manier uitvoeren als Linux.


Antwoord 4, autoriteit 4%

Controleer eerst of mingw32-make op uw systeem is geïnstalleerd.
Gebruik de opdracht mingw32-make.exe in Windows Terminal of cmd om te controleren,
installeer anders het pakket mingw32-make-bin.

ga dan naar bin directory default ( C:\MinGW\bin) maak een nieuw bestand make.bat

@echo off
"%~dp0mingw32-make.exe" %*

voeg de bovenstaande inhoud toe en sla deze op

stel de env-variabele in powershell

$Env:CC="gcc"

compileer vervolgens het bestand

make hello

waarbij hallo.c de naam van de broncode is


Antwoord 5, autoriteit 2%

Lees meer over automake en autoconf.

Makefile.am wordt verwerkt door automake om een Makefile te genereren die wordt verwerkt door make om uw bronnen te bouwen.

http://www.gnu.org/software/automake/


Antwoord 6

Ik heb hier een heel goed voorbeeld gevonden: https://bigcode.wordpress.com/2016/12/20/compiling-a-very-basic-mingw-windows-hello-world- uitvoerbaar-in-c-met-een-makefile/

Het is een eenvoudige Hello.c (u kunt c++ gebruiken met g++ in plaats van gcc) met de MinGW op Windows.

De Makefile ziet er als volgt uit:

EXECUTABLE = src/Main.cpp
CC = "C:\MinGW\bin\g++.exe"
LDFLAGS = -lgdi32
src = $(wildcard *.cpp)
obj = $(src:.cpp=.o)
all: myprog
myprog: $(obj)
    $(CC) -o $(EXECUTABLE) $^ $(LDFLAGS)
.PHONY: clean
clean:
    del $(obj) $(EXECUTABLE)

Other episodes