MAKEFILE简明指南(五)(转)
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的基本名。 |