听说上帝在make世界的过程中,他在星期天休息……我也只能在星期天休息……(谁知道上帝制造世界用了makefile没有?)
与昨天比较,看看多了什么东东
在以下的makefile中 "//"作为注释,不过在一个makefile中 是不能通过 "//" 来标记注释的。
#for build & debug XRDP program
#2005 08 04
#create by ZAP @kouton
#out file ./debug/xrdp.exe
CP = copy # xcopy /r /i
MAKE = nmake
DEL = del /q/f
EXE = ./debug/xrdp.exe
CPP = cl.exe
LINK32 = link.exe
#LINK32_FLAGS=/nologo /subsystem:console /incremental:no /out:"$(EXE)" //subsystem:console 说明这是一个console程序
LINK32_FLAGS= /nologo /DEBUG /DEBUGTYPE:CV /subsystem:console /incremental:no /out:"$(EXE)" /pdb:"./debug/xrdp.pdb" //最后这里说明了 pdb 文件输出的位置 没有这个,visual studio就不能调试我们的程序了(比如 breakpoint)
CPP_PROJ = -nologo -MD -GX -Zi -Zp1 -GR -Fd -DWIN32 -DDEBUG -D_CONSOLE /Fr
#CPP_PROJ=/nologo /EHsc /MDd /W3 /G5 /Zi /Od -D_DEBUG -DWIN32 -DWIN32_LEAN_AND_MEAN -D_CONSOLE -D_MBCS $(INCLUDE_DIRS) /FD /c
HEADERS = rdp.h /
constant.h /
types.h
OBJS = xrdp.obj /
rdp.obj
all : $(OBJS) //用过linux的朋友应该有点点映象 make all 就是执行这一段的内容 all: 就像c语言里面goto用的标号
$(LINK32) $(LINK32_FLAGS) $(OBJS)
.PHONY : clean rebuild all //这个告诉 nmake.exe clean rebuild all 这三个东西是三个“段” 避免和文件名冲突
clean : //当make clean的时候就执行这里的命令 删掉这些东西 用shell的del命令
-$(DEL) $(EXE) $(OBJS) *.idb *.pdb ./debug/*.pdb
.cpp.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
rebuild: clean all //当make rebuild的时候 就先make clean 然后make all
//直接make的话 nmake 会找到最先出现的部分 也就是make all啦 我们就不用每次都打 nmake all 只要nmake 就可以编译了