AAA
AAA

Reputation: 921

How to compile makefile using MinGW?

I'm new to this. Just wanted to ask how to compile a makefile. I am using MinGW compiler in C language. Do I have to save all my files in MinGW\bin? because right now my files are in a different directory.

Upvotes: 87

Views: 309333

Answers (9)

RichyRoo
RichyRoo

Reputation: 420

11 years later...

Download from Source Forge Open MinGW Installer Select Basic Setup,

navigate to Packages and Right click on “mingw-developer-toolkit-bin”, “mingw32-base-bin” and “msys-base-bin” Packages and select Mark for Installation

Navigate to the Top left corner and Left click on Installation then click Apply Changes

Make a coffee..

Add C:\MinGW\bin to the system PATH *** ALSO Add "C:\MinGW\msys\1.0\bin" ***

Apparently the file structure has changed but none of the documentation seems to have been updated. So the msys path needs to be added too now. That's two hours I'm not getting back!

Most of this is in https://nerdyelectronics.com/install-mingw-on-windows-for-make/ and the answers above, but adding the second PATH is the secret sauce

Upvotes: 0

Rami Alloush
Rami Alloush

Reputation: 2626

I had to run pacman -S make to get the make executable.

Upvotes: 4

Hirnhamster
Hirnhamster

Reputation: 7389

The easiest way to install make for MinGW that I found is

  • Go to ezwinports
  • Download file make-4.3-without-guile-w32-bin.zip (get the version without guile)
  • Extract zip
  • Copy the contents to your Git/mingw64/ directory, merging the folders, but do NOT overwrite/replace any existing files
  • navigate to the Git/mingw64/ directory via $(cd /; explorer .)

See https://www.pascallandau.com/blog/setting-up-git-bash-mingw-msys2-on-windows/#how-to-install-make for a short video of the process

Upvotes: 0

Suman Saurabh
Suman Saurabh

Reputation: 551

First check if mingw32-make is installed on your system. Use mingw32-make.exe command in windows terminal or cmd to check, else install the package mingw32-make-bin.

then go to bin directory default ( C:\MinGW\bin) create new file make.bat

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

add the above content and save it

set the env variable in powershell

$Env:CC="gcc"

then compile the file

make hello

where hello.c is the name of source code

Upvotes: 3

mohammad arastenia
mohammad arastenia

Reputation: 81

I have MinGW and also mingw32-make.exe in my bin in the C:\MinGW\bin . same other I add bin path to my windows path. After that I change it's name to make.exe . Now I can Just write command "make" in my Makefile direction and execute my Makefile same as Linux.

Upvotes: 7

user3742309
user3742309

Reputation: 195

I found a very good example here: https://bigcode.wordpress.com/2016/12/20/compiling-a-very-basic-mingw-windows-hello-world-executable-in-c-with-a-makefile/

It is a simple Hello.c (you can use c++ with g++ instead of gcc) using the MinGW on windows.

The Makefile looking like:

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)

Upvotes: 1

jiggunjer
jiggunjer

Reputation: 2116

You have to actively choose to install MSYS to get the make.exe. So you should always have at least (the native) mingw32-make.exe if MinGW was installed properly. And if you installed MSYS you will have make.exe (in the MSYS subfolder probably).

Note that many projects require first creating a makefile (e.g. using a configure script or automake .am file) and it is this step that requires MSYS or cygwin. Makes you wonder why they bothered to distribute the native make at all.

Once you have the makefile, it is unclear if the native executable requires a different path separator than the MSYS make (forward slashes vs backward slashes). Any autogenerated makefile is likely to have unix-style paths, assuming the native make can handle those, the compiled output should be the same.

Upvotes: 14

askmish
askmish

Reputation: 6674

Excerpt from http://www.mingw.org/wiki/FAQ:

What's the difference between make and mingw32-make?

The "native" (i.e.: MSVCRT dependent) port of make is lacking in some functionality and has modified functionality due to the lack of POSIX on Win32. There also exists a version of make in the MSYS distribution that is dependent on the MSYS runtime. This port operates more as make was intended to operate and gives less headaches during execution. Based on this, the MinGW developers/maintainers/packagers decided it would be best to rename the native version so that both the "native" version and the MSYS version could be present at the same time without file name collision.

So,look into C:\MinGW\bin directory and first make sure what make executable, have you installed.(make.exe or mingw32-make.exe)

Before using MinGW, you should add C:\MinGW\bin; to the PATH environment variable using the instructions mentioned at http://www.mingw.org/wiki/Getting_Started/

Then cd to your directory, where you have the makefile and Try using mingw32-make.exe makefile.in or simply make.exe makefile.in(depending on executables in C:\MinGW\bin).

If you want a GUI based solution, install DevCPP IDE and then re-make.

Upvotes: 58

lu_zero
lu_zero

Reputation: 998

Please learn about automake and autoconf.

Makefile.am is processed by automake to generate a Makefile that is processed by make in order to build your sources.

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

Upvotes: -1

Related Questions