Makefile中本身是没有 all 指令的,这里只不过是一种约定,认为目标 all 可以同时做很多事儿,也就能能同时生成多个目标,举例1-代码如下:

/*-------------- main1.c -----------------*/
#include <stdio.h>int main( void )
{printf("main1 task!\n");
}/*-------------- main2.c -----------------*/
#include <stdio.h>int main( void )
{printf("main2 task!\n");
}

对应的Makefile如下:

all : main1 main2main1 : main1.ogcc main1.o -o main1main2 : main2.ogcc main2.o -o main2%.o : %.cgcc -c $< -o $@

我们知道,一个Makefile中只有一个最终目标,就是第一个目标,上面的代码中,显然就是 all,那么all的依赖元素有2个,分别为main1和main2,而make具有自动推导,make在生成all的时候,自然要自动推导出main1和main2,这样我们就能通过一个Makefile生成了2个目标,分别是main1和main2,而这两个都是可执行程序,很巧妙的用法。

上面的代码还只是为了说明问题,我们再进一步举例,来实现,既能生成2了个目标,同时删除中间文件*o,只需要修改Makefile如下:

all : main1 main2 cleanmain1 : main1.ogcc main1.o -o main1main2 : main2.ogcc main2.o -o main2%.o : %.cgcc -c $< -o $@clean :rm -f *.o

那么执行make后,能够生成2个执行文件main1和main2,同时还能够删除掉编译输出文件.o.

小结:由于make的自动推导功能,一个目标的依赖既可以是中间文件,也可以是其他目标,这以功能,使得我们可以同时生成多个目标,并且可以通过一些特殊目标,比如clean,可以实现自动化编译,还可以实现自动“打扫卫生”的功能。

Makefile学习之 all相关推荐

  1. Makefile学习笔记 - 我的CPP之路 - C++博客

    Makefile学习笔记 - 我的CPP之路 - C++博客 Makefile学习笔记 Makefile学习笔记 先列出一个很简单的Makefile例子: --------- hd.cpp #incl ...

  2. Makefile学习笔记-备忘

    2019独角兽企业重金招聘Python工程师标准>>> ##makefile学习 makefile是编译C和C++文件依赖的脚本文件 ###基本语法 target... : prer ...

  3. zz Makefile学习教程: 跟我一起写 Makefile

    Makefile学习教程: 跟我一起写 Makefile 转载于:https://www.cnblogs.com/bioinfo/archive/2008/07/07/1237522.html

  4. Makefile学习笔记07|编译静态库并通过ifeq语句

    Makefile学习笔记07|编译静态库并通过ifeq语句   希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢.   这里是目录   本篇与上一篇有较多联系,有兴趣的可以先看上一 ...

  5. U-boot 顶层Makefile 学习(1)

    U-boot 顶层Makefile 学习(1) Makefile可以说是学习路上的难点之一,刚开始看视频学习时,很难跟得上讲师的步伐,虽然讲的很详细,但是由于没有Makefile基础,理解较为困难.建 ...

  6. Makefile学习笔记06|编译动态链接库

    Makefile学习笔记06|编译动态链接库   希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢.   这里是目录 静态链接与动态链接   链接分为两种:静态链接.动态链接. 静 ...

  7. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  8. Makefile 学习笔记

    Makefile学习笔记 1. gcc编译过程 预处理 gcc -E hello.c -o hello.i 编译 gcc -S hello.i -o hello.s 汇编 gcc -c hello.s ...

  9. makefile学习(转载)

    该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客: http://blog.csdn.net/haoel/article/details/2886 makefile很重 ...

  10. java makefile jar包_java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)...

    学习makefile教程,ubuntu中文网 1.写一个简单的java项目,不需要外部jar,用的简单的 importjava.util.ArrayList;是可以从CLASSPATH环境变量中找到的 ...

最新文章

  1. 人工智能之机器学习算法体系汇总
  2. 本地如何使用phpstudy环境搭建多站点
  3. Windows Server 2016 Technical Preview 5 X64 中文版下载地址
  4. junit--eclipse插件
  5. Redis性能指标监控
  6. C# 巧用anchor和dock设计复杂界面(控件随着窗体大小的变化而变化)【转】
  7. 工作104:vuex很强大
  8. 太强了!顶尖高校学霸“神仙笔记”刷屏,这10类专业绝了
  9. qt中在QMultiMap中删除自定义数据类的元素
  10. python朴素贝叶斯分类MNIST数据集
  11. tomcat报错“The specified JRE installation does not exist”
  12. 几点关于C/C++开发的思考
  13. matlab计算复活节概率,复活节日期的计算方法
  14. 自定义ContentProvider的一些细节探究
  15. stc5 采集adc值越来越小_热敏电阻温度采集简述
  16. ASP.NET页面生命周期概述
  17. C# .net中获取台式电脑中串口设备的名称
  18. 本科计算机相关课程设计,计算机科学及技术专业本科生大学课程设计.doc
  19. 数字电路猴博士期末复习笔记
  20. 【个人笔记】Ubuntu18.04 安装显卡驱动

热门文章

  1. 程序员应对35岁中年危机的措施
  2. 【微信小程序】简单实现QQ发说说选择图片并显示功能
  3. c语言祝生日快乐的程序,C语言如何编程生日快乐代码
  4. 太难了!微信借钱语音确认过还被骗了
  5. 应用技术大公开系列Q之八:(纳米纤维).石墨烯滤芯的制备工艺 (*9-2)
  6. 自考计算机应用毕业证,注意!自考考试通过≠可以拿毕业证!
  7. 服务器上传图片显示图片404,关于使用spring文件上传遇到的服务器中的图片访问不到报404的问题...
  8. 【小西】优化若依导出功能,若依继承导出
  9. 成功的项目管理策略:减少成本,提高质量
  10. python将10到1递减_程序在Python中找到最长严格递增然后递减的子列表的长度