Makefile文件在win32Asm中应用的简单写法

      这一段时间由于想写一点汇编的东西,便重新拾起老罗的书(原先看了一遍,并未深究)。回到老路上的我,只能重新按书中配置的编译环境来编译汇编程序。刚开始没看懂nmake的使用说明,愣是头疼了N天。

      总算是弄明白了如何的写简单的Makefie文件了(参考罗总的书)。

      Makefile是与make(windows程序下叫做nmake,在VC6.0的bin目录中可以找到)工具息息相关的文件,make工具是通过Makefile文件来维护代码(就是ml*.asm文件生成*.obj,link *.obj文件生成*.exe等)。当然make工具可以在命令行下输入一些参数来完成整个程序的编译工作。但是,那是相当的麻烦(如果一个程序很大,用到的文件很多时,我们可能要敲命令到手软啊,哈哈!)。

      今天我看了Makefile的一些基本知识,现在与大家共享一下,顺便巩固一下知识点。如不明白可参看罗云彬的书。

      首先我们来看一个Makefile文件:

#nmake工具的描述文件例子

EXE = Test.exe                                                                                   #指定输出文件

OBJS = x.obj /

      y.obj                                                                                             #需要的目标文件

RES = x.res                                                                                         #需要的资源文件

 

LINK_FLAG = /subsystem:windows

ML_FLAG = /c /coff

 

#定义依赖关系和执行命令

$(EXE) : $(OBJS)  $(RES)

        Link $(LINK_FLAG)  /out:$(EXE)  $(OBJS)  $(RES)

$(OBJS) : Common.inc

y.obj : y.inc

 

#定义汇编编译和资源编译的默认规则

.asm.obj

       ml $(ML_FLAG) $<

.rc.res

       rc  $<

 

#清除临时文件

clean:

       del  *.obj

       del  *.res

 

知识点:

1 注释  :

            注释都已#号开头,相当于VC中的//或者/* ....*/

            当一行过长时,可以用换行符"/",但"/"后不能有其他的字符包括注释和空格。

2宏定义:

           可以把宏成为变量,符合语法 : 变量名 = 变量内容 就是宏定义

           LINK_FLAG = LINK_FLAG = /subsystem:windows

           $(LINK_FLAG)  在引用宏是变量前加$,变量名长度超过一个字符时要加()

           $A

           $(A)

          

3 显示规则 :

            目标文件 : 依赖文件; 命令

            目标文件  :依赖文件

            (一个TAB)命令

           

            $(EXE) : $(OBJS)  $(RES)                                                 #目标文件:依赖文件

                      Link $(LINK_FLAG)  /out:$(EXE)  $(OBJS)  $(RES) #命令

              以上为显示规则nmake工具按照显示规则的定义执行命令

        

4 隐式规则 :

             $(OBJS) : Common.inc

             y.obj : y.inc

             当nmake工具发现规则中并没有命令那么他会认为该规则为隐式规则,即遵循默认规则(当然还得自己写)

            .asm.obj

                   ml $(ML_FLAG) $<   #当然要被

            .rc.res

                   rc  $<

             $<--------源文件名(只能用于隐式规则)

             rc $<用于x.rc  的时候就是 rc x.rc       对于y.rc  就是   rc y.rc

本文大概总结了一下常用的知识点,遇见新情况,Google见。哈哈!!!        

你可能感兴趣的:(windows,汇编,Google,exe,工具,makefile)