# Example mingw makefile
TARGETNAME=myapp
CC = i586-mingw32msvc-gcc
# A basic windows app (won't bring up a console window)
CFLAGS = -Wall -O -Wl,--subsystem,windows
# for debugging make this a console app (so we can write to stdout/stderr) easily;
# turn off optimisations and include symbols to help with running in a debugger
CFLAGS_DEBUG = -Wall -O0 -g -Wl,--subsystem,console -DDEBUG
# Create a dll instead of an exe
CFLAGS_DLL = -Wall -O0 -g -shared -Wl,--subsystem,windows -DDLL
# Any libraries you need - in this case wininet for communicating to the internet
LIBS = -lwininet
# Strip the binary for our prod build
STRIP = i586-mingw32msvc-strip
# UPX pack to minimise size for our prod build
UPX=upx -9
# Leave symbols, turn off optimisation, and send output to console
debug: $(TARGETNAME).c
$(CC) -o $(TARGETNAME)_dbg $(CFLAGS_DEBUG) $^ $(LIBS)
# No debug symbols, debug statements removed, subsystem windows means we won't pop a window
$(TARGETNAME): $(TARGETNAME).c
$(CC) -o $@ $(CFLAGS) $^ $(LIBS)
$(TARGETNAME).dll: $(TARGETNAME).c
$(CC) -o $@ $(CFLAGS_DLL) $^ $(LIBS)
release: $(TARGETNAME)
$(STRIP) $<
$(UPX) $<
Wednesday, April 13, 2011
Mingw example makefile for console app and DLL
Here is a basic Makefile to use with mingw to compile some common types of windows binaries - a windows console app, a non-console 'windows' subsystem app, and a DLL.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment