有时想写几个小程序作为测试用,又不想开虚拟机,也不想开VS。只想简单用个编辑器写完,在命令行里编译运行看结果。于是就自己整理了一个在Windows下可用的Makefile。 我似乎对Makefile情有独钟,接触Linux后,搞了驱动的Makefile模板,应用程序的Makefile模板(而且还搞了好几套不同应用场合的模板),现在又搞Windows平台的模板。可见本人的确是无事找事做之人。
闲话少提,下面给出我整理后的Makefile模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| # This is a simple Makefile under Windows using cl.exe and link.exe
# By Late Lee Copyleft 2011 2012
# note
# 1. you should make sure cl.exe and link.exe in your $PATH
# usage
# dos:nmake -f Makefile_win32 (using -f to specify the Makefile) # dos:nmake (if your Makefile is just "Makefile")
# !!!=== your executable file TARGET = a.exe CC = cl.exe LINK = link.exe RM = del
# /MDd
# /I*your-inc-dir* CFLAGS = /nologo /D "WIN32" /Od /c /Tp CPPFLAGS = /nologo /D "WIN32" /Od /c LDFLAGS = /nologo
# /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib
# /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib
# LDFLAGS = /NODEFAULTLIB:library
# !!!===your c source file SRCS_C =
# !!!===your c++ source file SRCS_CXX = main.cpp OBJS_C = $(SRCS_C:.c=.obj) OBJS_CXX = $(SRCS_CXX:.cpp=.obj) !MESSAGE begin.... all: clean $(TARGET)
# @$(RM) *.obj @echo "Done." $(TARGET): $(OBJS_C) $(OBJS_CXX)
# $(CC) $(CFLAGS) $(OBJS) -o $@ $(LINK) $** $(LDFLAGS) /OUT:$@
# compile .c as .cpp .c.obj:: $(CC) $(CFLAGS) $< .cpp.obj:: $(CC) $(CPPFLAGS) $<
#$(OBJS): $(SRCS)
# $(CC) -c $**
clean: @echo "Cleaning..." $(RM) $(TARGET) *.obj @echo "Done." .PHONY: clean all the world
|
这个Makefile比较简单,所以只适用于简单的场合。
上述内容参考了一些网络资料,因为比较常用,所以不列出来。