zoukankan      html  css  js  c++  java
  • 第四课 Makefile文件的制作(下)

    1序言:

      前面一节课讲解了Makefile的基础知识包括原理、预定义以及命令格式,这样是可以完成一个自动编译的文件,这些知识可以帮你完成。想想mak真是强大啊,可能有些同志发现了如果项目文件太多每个目标文件都要写指令有没有其它的简化来加快开发速度,提高项目的可维护性,答案当然是有的,这就是接下来的要讲解的I​n​f​e​r​e​n​c​e​ ​R​u​l​e​s​(​推​导​规​则​),有了这个推导规则是的make更强大。

    2原理:

      I​n​f​e​r​e​n​c​e​ ​R​u​l​e​s​(​推​导​规​则​)是一个模板,它用于决定如何从一个具有某种扩展名的文件构造出一个具有另一种扩展名的文件。描述:如果看到一个目标文件calc.o,它就会自动地把后缀.c文件calc.c加入到依赖对象中,此时calc.c就是calc.o的依赖文件,并且也会推导出其shell命令:cc -c calc.c.

    3实践:

      说了下可能不是很明白,下面来实践一下按照之前上节课的makefile文件推导可以是如下:

      

    EXE=calc
    OBJECTS=calcmain.o calc.o 
    $(EXE):$(OBJECTS)    #生成可执行文件。
          cc -o $(EXE) $(OBJECTS)    #自动推导出其shell命令
    calcmain.o:calc.h
          cc -c calcmain.c   #自动推导出其shell命令
    

      上面的例子cc指令可以不用写,因为是可以make自动推导出命令的,这也是make的隐晦规则。估计这个时候就更明白了,那么上一节课的整个Makefile文件如果是按照推导来编写又是怎样的呢,看下面:

    EXE=calc
    OBJECTS=calcmain.o calc.o 
     
    $(EXE):$(OBJECTS)
           cc -o $(EXE) $(OBJECTS)
    clean:
          rm -f $(EXE) $(OBJECTS)
    

      由于calcmain.o自动推导出calcmain.c这个可以省略,那么cc命令也自动推导出。

      今天在博客园突然检索了下自动推导结果发现一篇文章写的非常这里引用一下:http://www.cnblogs.com/wdpp/archive/2010/07/06/2386931.html,思路不清晰的可以前往观看。

  • 相关阅读:
    ACM ICPC 2008–2009 NEERC MSC A, B, C, G, L
    POJ 1088 滑雪 DP
    UVA 11584 最短回文串划分 DP
    POJ 2531 Network Saboteur DFS+剪枝
    UVa 10739 String to Palindrome 字符串dp
    UVa 11151 Longest Palindrome 字符串dp
    UVa 10154 Weights and Measures dp 降维
    UVa 10271 Chopsticks dp
    UVa 10617 Again Palindrome 字符串dp
    UVa 10651 Pebble Solitaire 状态压缩 dp
  • 原文地址:https://www.cnblogs.com/luoliang/p/3854593.html
Copyright © 2011-2022 走看看