makefile代码:

  1. .PHONY : rebuild clean $(TARGET) #声明伪目标时,除直接使用目标名外, 也可以使用 $(变量) 这是取变量的值
  2.  
  3. CC := g++
  4. TARGET := hello-makefile.out
  5. OBJS := func.o main.o
  6.  
  7. $(TARGET) : $(OBJS)
  8. $(CC) -o $@ $^
  9.  
  10. $(OBJS) : %.o : %.c
  11. $(CC) -o $@ -c $^
  12.  
  13. clean :
  14. $(RM) $(OBJS)
  15. $(RM) $(TARGET)
  16. @echo "clean"
  17.  
  18. #.PHONY : rebuild clean $(TARGET) #本代码的伪目标声明在这里,和写在上面实测都是可以的。都可以产生伪目标的效果。
    #实测时,以make clean测试,无论本地是否存在clean文件,clean都是伪目标的效果。
  19.  
  20. rebuild : clean $(TARGET)
  21. @echo "rebuild"

测试过程:

  1. root@ubuntu:~/Makefile_Test/5make_test# ls
  2. func.c func.o hello-makefile.out main.c main.o makefile
  3. root@ubuntu:~/Makefile_Test/5make_test# make clean
  4. rm -f func.o main.o
  5. rm -f hello-makefile.out
  6. clean
  7. root@ubuntu:~/Makefile_Test/5make_test# ls
  8. func.c main.c makefile
  9.  
  10. root@ubuntu:~/Makefile_Test/5make_test# make
  11. g++ -o func.o -c func.c
  12. g++ -o main.o -c main.c
  13. g++ -o hello-makefile.out func.o main.o
  14. root@ubuntu:~/Makefile_Test/5make_test# ls
  15. func.c func.o hello-makefile.out main.c main.o makefile
  16.  
  17. root@ubuntu:~/Makefile_Test/5make_test# make rebuild
  18. rm -f func.o main.o
  19. rm -f hello-makefile.out
  20. clean
  21. g++ -o func.o -c func.c
  22. g++ -o main.o -c main.c
  23. g++ -o hello-makefile.out func.o main.o
  24. rebuild
  25. root@ubuntu:~/Makefile_Test/5make_test# ls
  26. func.c func.o hello-makefile.out main.c main.o makefile
  27. root@ubuntu:~/Makefile_Test/5make_test#

root@ubuntu:~/Makefile_Test/5make_test# ./hello-makefile.out
  hello world
  main.c: a = 0
  root@ubuntu:~/Makefile_Test/5make_test#

源码:

makefile实验五 make clean rebuild 以及规则中的模式替换. 综合小小实验的更多相关文章

  1. Java实验四和实验五

    实验四 类的继承性和多态性 [开发语言及实现平台或实验环境] Windows2000 或XP,JDK1.6与Jcreator4.0 [实验目的] 1.  掌握OOP方式进行程序设计的方法, 2.  了 ...

  2. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验五:按键模块④ — 点击,长点击,双击

    实验五:按键模块④ - 点击,长点击,双击 实验二至实验四,我们一共完成如下有效按键: l 点击(按下有效) l 点击(释放有效) l 长击(长按下有效) l 双击(连续按下有效) 然而,不管哪个实验 ...

  3. TheSuperego 实验五 团队作业2:毕业设计选题系统

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...

  4. Makefile编写 五 隐含规则

    隐含规则———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj] ...

  5. 20145216 20145330 《信息安全系统设计基础》 实验五 简单嵌入式WEB 服务器实验

    20145216 20145330 <信息安全系统设计基础> 实验五 简单嵌入式WEB 服务器实验 实验报告封面 实验步骤 1.阅读理解源码 进入/arm2410cl/exp/basic/ ...

  6. 20145315&20145307《信息安全系统设计基础》实验五

    20145315&20145307<信息安全系统设计基础>实验五 北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1453 1452 姓名:陈俊达 ...

  7. 实验五(简单嵌入式WEB服务器实验)问题总结

    实验五问题总结 问题链接:<信息安全系统设计基础>实验五实验报告 虽然将07_httpd文件中全部拷贝进了bc中,文件夹中拥有Makefile文件,但是还是无法通过make得到该文件夹中c ...

  8. 20145224&20145238《信息安全系统设计基础》实验五

    20145224陈颢文20145238荆玉茗 <信息安全系统设计基础>第五次实验报告 课程:信息安全系统设计基础 班级: 1452 姓名:荆玉茗 陈颢文 学号:20145238 20145 ...

  9. 实验五 CC2530平台上ADC组件的TinyOS编程

    实验五 CC2530平台上ADC组件的TinyOS编程 实验目的: 加深和巩固学生对于TinyOS编程方法的理解和掌握 让学生初步掌握传感器的ADC组件应用方法 学生通过本实验能够初步的了解和掌握CC ...

随机推荐

  1. 没想到吧!关于Dubbo的『消费端线程池模型』官网也写错了。

    这是why的第 63 篇原创文章 荒腔走板 大家好,我是 why,欢迎来到我连续周更优质原创文章的第 63 篇.老规矩,先荒腔走板聊聊其他的. 上面这张图片是我前几天整理相册的时候看到的.拍摄于 20 ...

  2. PyCharm 中文教程 01:运行 Python 的四种方式

    <PyCharm 中文指南>在线阅读: http://pycharm.iswbm.com/ Github 项目主页: https://github.com/iswbm/pych... 1. ...

  3. 【jmespath】—1. 基础用法

    一.jsonpath 之前我写接口自动化测试时候,对于复杂的json返回,会使用jsonpath这个第三方库,就像写xpath一样,方便的查询json元素. 因为之前写WEB自动化时候,总用xpath ...

  4. 条件竞争(race condition)

    条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生. 参考了一些资料,发现一个比较能说明问 ...

  5. nginx模块化结构

    NGINX是一个免费.开源.高性能.轻量级的HTTP和反向代理服务器,也是一个电子邮件(IMAP/POP3)代理服务器 特点: 占有内存少,并发能力强 Nginx的优点: 模块化.事件驱动.异步.非阻 ...

  6. jQuery提供的Ajax方法

    jQuery提供了4个ajax方法:$.get()  $.post()  $.ajax()  $.getJSON() 1.$.get() $.get(var1,var2,var3,var4): 参数1 ...

  7. Tomcat源码分析(下载、启动)

    1.下载Tomcat源代码: https://tomcat.apache.org/download-80.cgi 2. 解压以及创建必要目录和配置 解压.新建catalina-home目录,同时将目录 ...

  8. leetcode刷题-62不同路径2

    题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 现在 ...

  9. Mybatis项目构建和CURD操作

    Mybatis入门 一.使用SqlSession对象创建Dao接口代理对象进行持久化操作 1.使用maven构建java项目 2.修改pom.xml配置,添加所需jar包坐标 <?xml ver ...

  10. 【python】itchat登录微信获取好友签名并生成词云

    在知乎上看到一篇关于如何使用itchat统计微信好友男女比例并使用plt生成柱状图以及获取微信好友签名并生成词云的文章https://zhuanlan.zhihu.com/p/36361397,感觉挺 ...