Create TOC

2012년 8월 11일

cygwin/Windows 개발을 위한 Makefile template

cygwin에서 Windows 프로그램 개발을 위한 Makefile template.

BASECFLAGS = -DUNICODE -D_UNICODE -DWIN32 -D_WIN32 -Wall -Wextra -ffunction-sections -fdata-sections
CXXFLAGS = -fno-rtti -fno-exceptions

ifdef debug
	OPTFLAGS = -g -DDEBUG -Wall -Wextra -Wfloat-equal -Wunreachable-code
else
	OPTFLAGS = -Os -s -DNDEBUG
endif

ifdef x64
	MINGWPREFIX = x86_64-w64-mingw32
	CFLAGS = $(BASECFLAGS) $(OPTFLAGS) -DWIN64 -D_WIN64
else
	MINGWPREFIX = i686-pc-mingw32
	CFLAGS = $(BASECFLAGS) $(OPTFLAGS)
endif
LDFLAGS = -Wl,--gc-sections -mwindows -mno-cygwin

CC = $(MINGWPREFIX)-gcc
CXX = $(MINGWPREFIX)-g++
RES = $(MINGWPREFIX)-windres

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

%.o: %.cpp
	$(CXX) $(CFLAGS) $(CXXFLAGS) -c $< -o $@

%.res.o: %.rc
	$(RES) -i $< -o $@

Makefile은 아래와 같이 사용할 수 있다.

디버그 빌드시

$ make debug=1

x64 빌드시

$ make x64=1