聽說上帝在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 就可以編譯了