MAKEFILE简明指南(五)(转)

MAKEFILE简明指南(五)
2010/06/08 14:54

NMAKE本身提供了一个预定义的后缀列表,内容如下:

       Rule                     Command                                               Default Action

       .asm.exe                 $(AS)$(AFLAGS) $*.asm                          ML $*.ASM

.asm.obj                 $(AS)$(AFLAGS) /c $*.asm                       ML /c $*.ASM

.c.exe                    $(CC)$(CFLAGS) $*.c                              CL $*.C

.c.obj                    $(CC)$(CFLAGS) /c $*.c                           CL /c $*.C

.cpp.exe                $(CPP)$(CPPFLAGS) $*.cpp                     CL $*.CPP

       .cpp.obj                 $(CPP)$(CPPFLAGS) /c $*.cpp                 CL /c $*.CPP

.cxx.exe                $(CXX) $(CXXFLAGS) $*.cxx                  CL $*.CXX

.cxx.obj                 $(CXX) $(CXXFLAGS) /c $*.cxx              CL /c $*.CXX

.bas.obj                 $(BC) $(BFLAGS) $*.bas;                           BC $*.BAS;

.cbl.exe                 $(COBOL) $(COBFLAGS) $*.cbl, $*.exe;    COBOL $*.CBL, $*.EXE;

.cbl.obj                 $(COBOL) $(COBFLAGS) $*.cbl;                COBOL $*.CBL;

.for.exe                 $(FOR) $(FFLAGS) $*.for                          FL $*.FOR

.for.obj                 $(FOR) /c $(FFLAGS) $*.for                       FL /c $*.FOR

.pas.exe                $(PASCAL) $(PFLAGS) $*.pas                    PL $*.PAS

.pas.obj                $(PASCAL) /c $(PFLAGS) $*.pas                 PL /c $*.PAS

.rc.res                  $(RC) $(RFLAGS) /r $*                               RC /r $*

         在上表中,类似AFLAG和CFLAG这种被包含在括号里面的是未定义的宏,通过在makefile中对这些宏给出定义,可以为这些命令指定编译器和参数。例如:

       $(AS)$(AFLAGS) $*.asm

AS宏用于指定编译器,NMAKE中默认为ML;AFLAGS宏用于给出编译器参数,NMAKE将之留给用户定义,默认为空。所以默认的操作为:

ML $*.asm

这里可以看到将宏展开的语法,就是将宏的名字用圆括号括起来,然后在前面加上一个美元符号。另外需要说明的是,”$*”是NMAKE预定义的一个特殊的宏,其等于target的路径加上target的基本名。

posted @ 2010-11-23 16:32  董雨  阅读(297)  评论(0编辑  收藏  举报