makefile

来源:互联网 发布:支付宝解除淘宝绑定 编辑:程序博客网 时间:2024/06/06 10:46

前言

还是了解下编译的一些东西,之前一直在研究,可是总是不得要领,这里花两天时间好好研究下,毕竟这个知识点很少,学习以后万一看一些c代码,也是很重要的,

正文

这里我主要按照基本的原则一条一条的记录,不是对于完全零基础的阅读,并且这也没啥用,基本是自己业余爱好,作为我自己的一篇笔记。

2.1、基本结构

目标文件: 依赖文件    控制指令

目标文件可以是产生的文件,也可以是一个伪指令,依赖文件很关键,是控制是否需要解析依赖的文件更新的。控制指令就更加是bash指令,我们看个例子

maketest:maketest.c dependce.c dependce.h    gcc -o maketest maketest.c dependce.c

maketest 是一个目标文件,如果这个maketest不是终极目标(相当于默认的操作,你可以理解成c语言中的main函数),我们需要执行 make maketest,才会执行这个操作,我们依赖文件有三个,假如我们去掉dependce.h,执行不会错,可是我们改变dependce.h,执行不会错,可是我们改变dependce.h,编译不会发生改动,这里理解依赖的意义了吧,控制指令我就不多解释,可以是所有的bash指令

2.2、函数

函数需要,(函数名,变量列表);

$(wildcard *.c)   //展开通配符的结果,也就是所有的以后缀为c的文件

2.3、变量

这个比较复杂,我们只要知道他就是一个替换就好了,这里没有声明,仅仅有定义。直接赋值,
主要有四种赋值方式

  1. object = dependce.c dependce.h
  2. object := dependce.c dependce.h
  3. object ?= dependce.c dependce.h
  4. object += dependce.c dependce.h
    具体区别比较复杂,一般情况基本差不多,除了第四种,是在原有基础上又给添加一个部分,基本跟我们理解没有偏差,至于使用
    $(变量名),就好了

2.4 include

阅读时候,当有些全局的东西,我们几个makefile可以引用同一个文件我们可以这样

include dependcefile

这里我认为主要包好一些变量,和定义一些依赖关系比较好,具体有啥特别好的功能暂时不了解。

2.5 条件编译

这里主要是ifeq、ifdef、ifneq、ifndef。

后记

写到这里其实我本人还是有些不太理解,不过看完一个makefile文件还是没太大问题。这里我想大家其实很有可能还是一头雾水。不过这里还是要去看官方文档最好

0 0
原创粉丝点击