makefile的隐含规则默认处理第一个目标

函数:wildcard可以进行文本匹配

patsubst内容替换

变量:

  $@代表目标

  $^  代表全部依赖

  $<  第一个依赖

  $?   第一个变化的依赖

@在规则前代表不输出给条规则指令

-在规则前代表该规则报错仍继续执行

实例:

SrcFiles=$(Wildcard *.c):定义宏SrcFiles,Wildcard函数匹配当前目录下所有后缀为.c的文件,SrcFiles内容为匹配结果

若当前目录下有这些文件,则这条语句等价于:

  SrcFiles = access.c fock_fd.c lseek.c mmap.c orphan.c pipe_ps.c rename.c stat.c trancate.c wait.c filecount.c fork.c ls_ls.c openmax.c pipe.c read.c/     sigchildcatch.c text.c vfork.c

 

ObjFiles=$(patsubst %.c,%,$(SrcFiles)):定义宏ObjFiles,patsubst函数将宏SrcFiles中.c文件替换成去掉.c的字符,并赋值给ObjFiles。等价于:

  ObjFiles=access  filecount  fock_fd  fork  lseek  ls_ls  mmap  openmax  orphan  pipe  pipe_ps  read  rename  sigchildcatch  stat  text  trancate  vfork  wait

app:$(ObjFiles):规则,格式:目标(app):依赖( $(ObjFiles):ObjFiles中的每一项)

%:%.c:规则

gcc $<  -o  $@  # -std=c99 -g:上一条规则的命令,$<代表目标,$@代表依赖的第一项,#代表其后的是注释

.PHONY:clean:.PHONY标注clean为伪目标

clean:  :规则

[笔记]makefile编写的更多相关文章

  1. Yocto开发笔记之《Makefile编写》(QQ交流群:519230208)

    开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 =============================== ...

  2. Make和Makefile编写(详见GCC手册)

    Makefile和Make Rules 多模块软件.依赖树和Make 默认规则 Make使用程序对简单变量的支持 内建变量 虚目标 特殊目标 一般性语法错误及其纠正措施 命令行的使用和调试 Makef ...

  3. Hadoop学习笔记(5) ——编写HelloWorld(2)

    Hadoop学习笔记(5) ——编写HelloWorld(2) 前面我们写了一个Hadoop程序,并让它跑起来了.但想想不对啊,Hadoop不是有两块功能么,DFS和MapReduce.没错,上一节我 ...

  4. linux 下C语言编程库文件处理与Makefile编写

    做开发快3年了,在linux下编译安装软件算是家常便饭了.就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题.看来还是像vs.codeblocks这样的ide把人弄蠢了.便下定决心一 ...

  5. 单目录下多文件 makefile编写

    makefile很久就接触过了,但是一直没怎么深入的去学习和总结:在项目中我也只是看看makefile或者修改部分语句,全部自己动手写的话还真没有:知识在于沉淀,这句说的非常好,所以现在把自己理解的东 ...

  6. linux --> Makefile编写

    Makefile编写 单目录 测试程序在同一个文件中,共有func.h.func.c.main.c三个文件,Makefile写法如下所示: CC = gcc CFLAGS = -g -Wall mai ...

  7. Linux——makefile编写

    以前对makefile的编写,限于刚开始接触,我都比较局限一些死板的格式,有时候就会显得有些繁琐.在进一步了解一些系统编译和链接的知识后,对makefile编写流程有了一些新的认识,所以来此梳理梳理, ...

  8. 如何将多个C文件链接在一起----Makefile编写及make指令

    需使用GCC编译器,关于MinGW的安装指南:https://people.eng.unimelb.edu.au/ammoffat/teaching/20005/Install-MinGW.pdf 单 ...

  9. Windows 下的 Makefile 编写

    Windows 下的 Makefile 编写(一)Makefile的基本规则 作者:cntrump Makefile对于很多人来说是陌生的,特别是习惯于使用 IDE 的人来说,似乎没有听说过 Make ...

随机推荐

  1. 关于Windows10内存随时间不断升高问题

    问题描述 电脑买了10个月了,头半年的运行内存都是正常的,基本不会超过60%,但是最近几个月发现自己电脑的运行内存会随时间不断地升高,关机后重启也无法解决这个问题QAQ 常见的症状为一开机,点开任务管 ...

  2. 更换composer镜像源为阿里云

    ​ 说一说我为什么会更换镜像源,今天我准备给公司的项目添加一个 Excel 导出的功能,需要 PhpSpreadsheet 插件来实现我的功能.输入命令发现提示我 Authentication req ...

  3. P3586 [POI2015]LOG

    传送门 对于询问,首先如果正数数量不到 $c$ 个显然无解 然后如果大于等于 $s$ 的数大于等于 $c$ 个,那么显然有解 否则,考虑贪心地取数,首先初始大于等于 $s$ 的哪些数我们每次取都可以取 ...

  4. jQuery效果--淡入和淡出

    jQuery Fading 方法 通过 jQuery,您可以实现元素的淡入淡出效果. jQuery 拥有下面四种 fade 方法: fadeIn() fadeOut() fadeToggle() fa ...

  5. centos 7 私有云盘 OwnCloud 安装搭建脚本

    #!/bin/bash #Build LAMP Server Conf mysql_secure_installation service mariadb restart systemctl enab ...

  6. date( ) 日期函数

    date('Y-m-dT2:00')    实际时间为14:00 date('Y-m-d 2:00')     实际时间为2:00 扩展:每天的时间戳秒数为 86400

  7. tp5之允许跨域请求

    一.在app顶层创建文件common\behavior\CronRun.php 写入以下代码 <?php namespace app\common\behavior; use think\Exc ...

  8. 【hdu 6071】Lazy Running

    菜鸡永远都在做着变聚的梦. 题意 有 \(4\) 个点连成一个环,连接顺序依次为 \(1-2-3-4-1\).相邻两个点之间有个距离 \(d_{i,i+1}\)(特别地,当 \(i=4\) 时为 \( ...

  9. 第二章 Vue快速入门--20 品牌案例-完成品牌列表的添加功能+ 21 品牌案例-根据Id完成品牌的删除

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  10. mybatis-plus generator使用

    pom配置 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus- ...