当前位置: 首页 > news >正文

Linux下的系统编程——makefile入门(四)

前言:

或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。

一、makefile: 管理项目。

设置文件add.c  div1.c  sub.c   hello.c

    命名:makefile     Makefile  --- make 命令

    1.  1 个规则:

        目标:依赖条件

                        (一个tab缩进)命令

makefile中的规则

(1)目标的时间必须晚于依赖条件的时间,否则,更新目标

(2)依赖条件如果不存在,找寻新的规则去产生依赖条件。

    ALL:指定 makefile 的终极目标。

        (目的是确定最终退出的目标)


    2.  2 个函数:

        (1)src = $(wildcard ./*.c)

        匹配当前工作目录下的所有.c 文件。将文件名组成列表,赋值给变量 src。  src = add.c sub.c div1.c 

        (2)obj = $(patsubst %.c, %.o, $(src))

        将参数3中,包含参数1的部分,替换为参数2。 obj = add.o sub.o div1.o

            clean:    (没有依赖)

        -rm -rf $(obj) a.out    “-”:作用是,删除不存在文件时,不报错。顺序执行结束。

    3.  3 个自动变量:

        (1)$@

                        在规则的命令中,表示规则中的目标。

        (2)$^

                        在规则的命令中,表示所有依赖条件。

        (3)$<

                        在规则的命令中,表示第一个依赖条件。如果将该变量应用在模式规则中,它可将

                依赖条件列表中的依赖依次取出,套用模式规则。

4.模式规则:

        %.o:%.c
           gcc -c $< -o %@

    (1)静态模式规则:

        $(obj):%.o:%.c
           gcc -c $< -o %@    

    (2)伪目标:

        .PHONY: clean ALL

     参数:
        -n:模拟执行make、make clean 命令。

        -f:指定文件执行 make 命令。          xxxx.mk

变化1:

 

变化2:

http://www.lryc.cn/news/138808.html

相关文章:

  • Mybatis的综合案例-学生信息查询系统 用于校验是否真正学习掌握了动态SQL
  • 力扣:70. 爬楼梯(Python3)
  • 陕西广电 HG6341C FiberHome烽火 光猫获取超级密码 改桥接模式 提升网速
  • 无涯教程-PHP - 移除的扩展
  • 笔记:transformer系列
  • Mysql socket连接测试
  • 探究分布式操作系统的本质
  • opencv-dnn
  • 如何选择合适的开源许可证?
  • 【前端】深入解析CSS:选择器、显示模式、背景属性和特征剖析
  • 算法训练营第三十四天(8.23)| 动态规划Part04:01背包
  • 【python】tkinter使用多进程打包成exe后multiprocessing无法关闭对应进程
  • Redis工具类(缓存操作,Object转换成JSON数据)
  • Linux 下 Java Socket 编程报 java.net.Exception:Permission denied (权限不足)
  • IDEA项目实践——VUE介绍与案例分析
  • vue-canvas基本使用和注意事项-动画闪烁效果-自适应适配不同分辨率问题
  • Jmeter 如何才能做好接口测试?
  • 电商平台京东平台获得京东商品描述API接口演示案例
  • 《算法竞赛·快冲300题》每日一题:“单位转换”
  • R语言13-R语言中的数据导入导出和批量导入
  • 【Java】对象与类
  • 视频尺寸缩小,一键批量剪辑,轻松制作精简版
  • leetcode做题笔记94. 二叉树的中序遍历
  • UWB高精度人员定位系统源码,微服务+java+ spring boot+ vue+ mysql技术开发
  • 企业党建杂志企业党建杂志社企业党建编辑部2023年第4期目录
  • ChatGPT + Flutter快速开发多端聊天机器人App
  • ubuntu18.04复现yolo v8之最终章,realsenseD435i+yolo v8完美运行
  • Python统计中文词频的四种方法
  • sql server 快速安装
  • 机器学习之损失函数