Makefile中一个项由以下结构所组成:
target: dependency_files
command
比如,有两个文件hello.c,hello.h,创建的目标体为hello.o,执行命令是gcc -c hello.c,Makefile就可以这样写:
hello.o: hello.c hello.h
gcc -c hello.c
一个稍微复杂一点而的例子
sunq: kang.o yul.o
gcc kang.o bar.o -o myprog
kang.o : kang.c kang.h head.h
gcc -Wall -O -g -c kang.c -o kang.o
yul.o : bar.c head.h
gcc -Wall -O -g -c yul.c -o yul.o
这里面有有3个目标体,分别为sunq,kang.o,yul.o,如果用户使用命令“make sunq”,则make找到目标体sunq开始执行。在执行时,如果有了target,并且他的修改时间比所依赖的文件更新的话,target是不会重新生成的。
Makefile变量:
Makefile有两种定义变量方式,一种是递归展开方式(在引用的时候替换,如果还包含其他变量则递归展开),另一种是简单展开方式(在定义的时候展开,且只展开一次)
递归展开的格式:VAR = var
简单展开的格式:VAR := var
make使用变量的方式$(VAR)
我们来使用变量来改造一下上面的例子
OBJS = kang.o yul.o
CC = gcc
CFLAGS = -Wall -O -g
sunq: $(OBJS)
$(CC) $(OBJS) -o myprog
kang.o : kang.c kang.h head.h
$(CC) $(CFLAGS) -c kang.c -o kang.o
yul.o : bar.c head.h
$(CC) $(CFLAGS) -c yul.c -o yul.o
Makefile中常见的自动变量
变量 |
含义 |
$* |
不包含扩展名的目标文件名称 |
$@ |
目标文件的完整名称 |
$< |
第一个依赖文件的名称 |
$+ |
所有依赖的文件,以空格间隔 |
$^ |
所有不重复的依赖文件,一空格间隔 |
所以在上例中,Makefile的动作可以这样写
$(CC) $(CFLAGS) -c $< -o $@
分享到:
相关推荐
make笔记.zip
MAKE学习笔记
Linux下makefile教程—网址 Linux下Make及其形容文件简介 Makefile教程 makefile学习笔记 shell指令
makehuman -1.1.1导入blender使用骨骼调整动画,以及MAX中模型在blender中如何蒙皮.
Openwrt学习笔记-通用固件-make-menuconfig配置,Openwrt学习笔记-通用固件
狂神说myBatis,Spring,SpringMVC配套makedown笔记,值得拥有嗷!
狂神说myBatis,Spring,SpringMVC配套makedown笔记,值得拥有嗷!
makecode 实时投屏软件 ipad专用 利用笔记本投影到大屏幕
狂神说myBatis,Spring,SpringMVC配套makedown笔记,值得拥有嗷!
VNote 的特性包括: 使用 语法高亮 而不是实时预览来提供舒适的编辑体验; 编辑时 实时原地预览图片链接; 编辑时,代码块支持语法高亮; 支持 Mermaid 流程图,MathJax 数学公式; 支持 Vim 模式;...
angsd: 用于分析NGS数据的程序。... make笔记我已经切换到使用htslib来解析单次读取(以便进行CRAM读取,同时避免编写自己的CRAM解析器)。 我仍在使用自己的读取池。 因此,用户还应该下载并安装htslib。程序有论文
《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和全局...
HP笔记本BIOS重刷工具 To use this system, select your supported hp probook/... use the 'Make All' button to create all posible keys. run the shotgun.bat file created to run through all the keys quickly.
Linux 学习笔记。包括centOS,Ftp,AT&T汇编,make说明文档等。
使用成像激光雷达的稳健位置识别使用高分辨... cd ~/catkin_ws/srcgit clone https://github.com/TixiaoShan/imaging_lidar_place_recognition.gitcd ..catkin_make笔记下载可以从下载本文中使用的三个数据集。 用于数
糖果记忆 这是一个用于Android的FOSS记忆游戏。 截屏致谢糖果图形是从才华横溢的...其余部分在安装过程中下载make setup要建立资产,您应该make笔记该项目遵循标准Java编码风格,但有一个例外:私有内容是snake_case;)
gc地平线检测器 ... make 笔记: 最近,我们将CNN模型更新为最新的网络,并采用了另一项出色的著作引入的方法对其进行了培训。 如果您需要我们工作的原始实现,仍然可以检查旧版本: $ git checkout v1.0
make 笔记 这里有几个演示,一个演示在棋盘上方有一堆随机对象,光线对准了相机,另一个演示了Square徽标(因为很容易用构造性实体几何来表示,我的一些朋友在Square工作)。 这是非常缓慢且未优化的。 我计划有一...
ThermalORB目录基本信息使用PyTorch和OpenCVC...make笔记为了正确地编译代码,您必须编辑CMakeLists.txt文件,使其指向您的libtorch安装。 最简单的方法是确定python软件包管理器的安装位置。 pip show torch根目录添加
一张思维导图读完一本书 产品必读 不要让我思考(Don't Make Me Think) (在实验室第一年学姐推荐读的,还做了汇报,资料现在还在群里用了几届)