1.Makefile的规则

1.1 格式

目标:依赖命令……

必须注意的是,命令前面的不是空格,而是制表符Tab。

1.2 伪目标

makefile中把那些只包含命令,没有任何依赖的目标称为”伪目标”(phony targets)

1 .PHONY: clean
2 clean:
3         rm *.o led.elf led.bin

“.PHONY” 将“clean”目标声明为伪目标

1.3 最终目标

如果用户没有指定执行某一条规则,make会默认执行makefile中的第1条规则,而这条规则中的目标称之为:最终目标

2.Makefile变量

2.1 自己定义变量

使用变量前

app1: app1.o func1.o func2.o
gcc app1.o func1.o func2.o -o app1
app2: app2.o func1.o func2.o
gcc app2.o func1.o func2.o -o app2

func1.o func2.o多次出现,用变量代替。

使用变量后

obj=func1.o func2.o    #等号两边没有空格
app1: app1.o $(obj)
gcc app1.o $(obj) -o app1
app2: app2.o $(obj)
gcc app2.o $(obj) -o app2

2.2 系统默认的变量

$^:代表所有的依赖文件
$@:代表目标
$<:代表第一个依赖文件

使用变量前:

led.o : led.Sarm-linux-gcc -g –o led.o -c led.S

使用变量后:

led.o : led.Sarm-linux-gcc -g –o $@ -c $^

3.通用规则(%)

led.o:led.sarm-linux-gcc -g -o led.o -c led.Smain.o:main.sarm-linux-gcc -g -o main.o -c main.S可以写成如下:
%.o:%.sarm-linux-gcc -g -o %.o -c %.S

观察可知:目标和依赖只有后缀不一样,都只有一个依赖。

4.Makefile使用技巧

4.1 去回显

命令前加@符号

4.2 文件名

make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可用如下方法:

make -f 文件名

转载于:https://www.cnblogs.com/boyiliushui/p/4482902.html

Makefile的写法相关推荐

  1. Makefile万能写法(gcc程序以及arm-linux-gcc程序)-转

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://7071976.blog.51cto.com/7061976/1322211 在l ...

  2. linux gcc生成可执行代码命令,Makefile万能写法(gcc程序以及arm-linux-gcc程序)

    在linux下使用gcc 编译时,Makefile的万能写法 ,每次只需更改要生成的目标文件名称(test)尽可: objs := $(patsubst %c, %o, $(shell ls *.c) ...

  3. Makefile写法入门心得

    Makefile的写法入门心得 Makefile的出现使得编译过程极大地自动化了,省去了很多人工工作,非常方便.这里,小结一下写Makefile的一点小心得.嗯,对了,差点忘了一件事,同一个Makef ...

  4. Makefile之大型工程项目子目录Makefile的一种通用写法

    原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8902133,作者:gqb666 管理Linux环境下的C ...

  5. C和C++混合编程的Makefile的编写!

    在项目实践中,经常遇到C和C++混合编程的情况. 目前的业务需求是: c写的几个文件,和一个C++文件要整合为一个动态库,被C++调用.而这个动态库的生成过程中,会链接几个基础的开发库,比如libz, ...

  6. makefile的使用方法(简单视频教程以及详细文字教程)

    文章目录 1.makefile详细文字教程 2.makefile简单教程(B站视频教程) makefile基本语法格式: 简单示例(单文件)makefile写法 带包含关系的多文件makefile写法 ...

  7. Makefile(1):基本使用

    在桌面系统上开发常使用VS.eclipse.Keil等IDE,编译点一下按钮,就可以完成.但在无桌面的服务器上开发,改怎么做?而编译内部是怎么实现的?改动文件后如何增量文件?掌握Makefile文件写 ...

  8. Makefile 入门教程

    1.Makefile简介 Makefile 定义了软件开发过程中,项目工程编译链.链接的方法和规则. 由 IDE 自动生成或者开发者手动书写. Unix(MAC OS.Solaris)和Linux(R ...

  9. 如何写好Makefile

    Makefile笔记整理 什么是Makefile? makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefi ...

最新文章

  1. underscore
  2. 用ATL的W2A和A2W宏转换Unicode与ANSI字符串
  3. python安装numpy-如何为python安装numpy和scipy?
  4. SAP创建新新用户新角色和个人配置的相关方法
  5. 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - C.跑步锻炼
  6. IntelliJ IDEA里对Lombok插件的配置步骤
  7. 消防给水及消火栓系统技术规范_消防给水及消火栓系统技术规范5.1 消防水泵 习题...
  8. java键盘输入到文件中_在Linux中使用java和javac命令编译运行java文件
  9. mui 批量上传图片 php,MUI+Hbuilder之多图片,单图片上传(五)
  10. H.264的三种开源编码器比较
  11. 3种时间复杂度实现不同类型的无序数组去重
  12. Java数据结构笔记1——稀疏数组sparse array
  13. iMeta | FSCapture报告录屏和视频剪辑(视频教程)
  14. 这么热门的互联网行业,哪些岗位最有前途?薪资高吗?
  15. 三星970PRO用于高速采集存储系统
  16. c++二分法求平方根
  17. Z04 - 999、Flink与电商指标分析
  18. 任务管理器--内存篇(上)
  19. 成语接龙和唐诗背诵文字游戏开发
  20. 随手记——静态Flag变量使用不规范导致的重大流程错误

热门文章

  1. Datatable/Dataset 转 JSON方法
  2. 检查 Linux 服务器性能
  3. HTML学习笔记16——尺寸的表示_px、%、em三种
  4. VelocityTracker简要
  5. 【WP7进阶】——扩展框架组件
  6. 女人跳槽:最重要的是你的独立,你的快乐
  7. 2019年3月未来教育计算机二级题库,2019年3月计算机二Access考试操作模拟试题001...
  8. python中的命名空间指什么_13.Python中的命名空间是什么
  9. html仿百度页面代码_百度优化需要注意的4点
  10. mysql命令行执行复杂sql_mysql命令行中执行sql的几种方式总结