#宏定义 有些宏定义未用到
ROOT_LIB = $(ROOT)\lib $(ROOT)\atlmfc\lib $(ROOT)\atlmfc\lib\i386 $(ROOT)\PlatformSDK\lib
EXE = test.exe #指定输出文件名
EXEENTRY = WinMain
SOURCE = main.cpp
OBJS = main.obj
LIBS = user32.lib
RES =
LINK_FLAG = /DEBUG /SUBSYSTEM:CONSOLE #连接选项;
CL_FLAG = /EHsc /c /Zi #编译选项
#显式规则
#隐含规则
.cpp.obj: #由cpp 生成 obj文件
cl $(CL_FLAG) $<
#清临时文件
ROOT = C:\Program Files (x86)\Microsoft Visual Studio 8\VC #系统include以及lib根目录
ROOT_INCLUDE = $(ROOT)\Include $(ROOT)\atlmfc\include $(ROOT)\PlatformSDK\includeROOT_LIB = $(ROOT)\lib $(ROOT)\atlmfc\lib $(ROOT)\atlmfc\lib\i386 $(ROOT)\PlatformSDK\lib
EXE = test.exe #指定输出文件名
EXEENTRY = WinMain
SOURCE = main.cpp
OBJS = main.obj
LIBS = user32.lib
RES =
LINK_FLAG = /DEBUG /SUBSYSTEM:CONSOLE #连接选项;
CL_FLAG = /EHsc /c /Zi #编译选项
#显式规则
$(EXE): $(OBJS) #要生成exe 则必须包含有objs 定义的文件
#第二行的程式之前一定要空一格以上 如下也是为注释标志,NMAKE会忽略所有从#开始到下一个换行符之间的所有文本。这里要注意的是:在command lines中不能存在注释。因为对于command lines,NMAKE是将其整行传递给OS的。通常对于command lines的注释都是放在行与行之间。
@echo linking...
#换行用tab 或者 ;写在一行上
#隐含规则
.cpp.obj: #由cpp 生成 obj文件
cl $(CL_FLAG) $<
#清临时文件
clean:
del *.obj
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
cout<<"hello world"<<endl;
MessageBoxA(NULL,"1","1",MB_OK);
}
编译的cpp 文件代码如上
将cpp 和 makefile 放在一起
visual studio 环境控制台下 nmake 回车 会生成 test.exe
makefile就这么简单