Makefile 文件

Linux下:
gcc 编译的时候 不会 检查 文件是否被修改过 直接 所有源文件 重新编译(会造成 大量的重复 编译)
make: 编译的时候 会 检查 文件是否被修改过 只编译 被修改过源文件 (避免 大量的重复 编译)
make:大量代码 的关系维护

知识点2【make的语法】

通过 依赖文件 生成 目标文件。
目标:依赖文件 (只是关系的描述)
命令列表(将依赖文件 生成 目标文件的具体指令)
注意:依赖文件可以是多个。命令 也可以多个

案例1:一个简单的makefile文件

main.c

#include <stdio.h>
#include "main.h"int main(int argc, char *argv[])
{printf("hello make world\n");printf("PI = %lf\n",PI);return 0;
}

main.h

#define PI 3.14

makefile

main:main.cgcc main.c -o main

  • 当敲make指令的时候 make工具 自动寻找当前路径下的GNUmakefile、makefile/Makefile文件 按照GNUmakefile、makefile/Makefile中规则执行编译。
  • 如果 你的makefile文件名是自定义 就需要 -f指明

make 目标名称


makefile

main:main.cgcc main.c -o main
A:xxxxxxxxxxxxxx
B:hhhhhhhhhhhhhh

只敲make 默认执行 第一个目标 然后 退出
如果想执行A目标:make A
如果想执行B目标:make B

案例:多定义一个目标(可以没有依赖文件 假想目标)

makefile

main:main.cgcc main.c -o main
clean:rm main

复杂的makefile

main.c

#include <stdio.h>
#include "main.h"
#include "printf1.h"int main(int argc, char *argv[])
{printf("hello make world\n");printf("PI=%lf\n",PI);printf1();return 0;
}

main.h

#define PI 3.14

printf1.c

#include <stdio.h>
#include "main.h"
void printf1(void)
{printf("hello printf1 world PI=%lf\n",PI);return;
}

printf1.h

extern void printf1(void);

makefile

makefile中的变量

1、变量的分类

自定义变量

环境变量
预定义变量

2、自定义变量

案例:多文件makefile第一次升级

exec=main
cc=gcc
obj=main.o printf1.o
cflags=-Wall -g
$(exec):$(obj)$(cc) $(obj) -o $(exec) $(cflags)
main.o:main.c$(cc) -c main.c -o main.o $(cflags)
printf1.o:printf1.c$(cc) -c printf1.c -o printf1.o $(cflags)
clean:rm $(exec) *.o
3、make工具 给 makefile传值



4、系统环境变量

env查看环境变量
export test=100 将test变量 设置环境变量

5、预定义变量



比较完善的makefile

exec=main
cc=gcc
obj=main.o printf1.o   #你要修改的地方
cflags=-Wall -g
$(exec):$(obj)$(cc) $^ -o $@ $(cflags)
%.o:%.c$(cc) -c $< -o $@ $(cflags)
clean:rm $(exec) *.o

Makefile 文件详细介绍相关推荐

  1. cad如何打开stp文件_stp文件怎么打开_CAD打开stp文件详细介绍_酷下载

    stp文件是基于ASCII格式的STEP应用协议版本,一般来说是用AutoCAD和CATIA软件打开,但是很多用户不知道,今天小编就给大家带来了CAD打开stp文件详细介绍. 什么是STP文件 CAT ...

  2. python读取.mat文件,python将变量存为.mat文件详细介绍

    在进行数据处理的过程中,经常会用到Matlab和python两种工具,.mat文件是Matlab数据存储的标准数据格式,通过创建一个.mat文件详细介绍两种工具之间的数据读取和存储. 一.python ...

  3. makefile文件简要介绍

    到此为止,读者已经了解了如何在Linux下使用编辑器编写代码,如何使用Gcc把代码编译成可执行文件,还学习了如何使用Gdb来调试程序,那么,所有的工作看似已经完成了,为什么还需要Make这个工程管理器 ...

  4. kubernetes实战篇之helm示例yaml文件文件详细介绍

    前面完整示例里,我们主要讲解helm打包,部署,升级,回退等功能,关于这里面的文件只是简单介绍,这一节我们详细介绍一下这里面的文件,以方便我们参照创建自己的helm chart. Helm Chart ...

  5. linux 查看u盘文件,详细介绍Linux系统下检测U盘是不是已经连接的方法

    Linux操作系统是基于Unix操作系统发展而来的一种克隆系统,它诞生于1991年的10月5日(这是第一次正式向外公布的时间).今天就跟着小编一起来看一看:详细介绍linux系统下检测U盘是不是已经连 ...

  6. php的htaccess,PHP .htaccess文件详细介绍

    1.什么是.htaccess文件及 .htaccess文件(或者"分布式配置文件")提供了针对每个目录改变配置的方法,即在一个特定的目录中放置一个包含指令的文件,其中的指令作用于此 ...

  7. linux xorg 文件 位置,Linux系统中xorg.conf文件详细介绍

    先看一个完整的xorg.conf文件,如下:复制代码 代码如下: # /.../ # SaX generated X11 config file # Created on: 2009-05-31T19 ...

  8. java IO读写文件详细介绍

    java IO读写是常用的操作,需要每个java操作者做到熟知,掌握 //这些调用是可以统一用java.io.*,为了方便查看用了哪些类,故全部列出,哎我真是一个暖男 import java.io.B ...

  9. 真封神虚拟服务器,服务器端文件详细介绍即修改(三)

    我们每星期 加三个修改教程,废话不多说 开始吧. 1.打开服务器端,修改等级在version\chinese_gb\config 的 game_rule.ini 可以设置最高等级和宝宝最高等级包括传送 ...

最新文章

  1. 人民币小写转大写php实现
  2. sed删除空行,#开头的行,以及第一行
  3. 『转』数据库的委托之类型分类处理
  4. 4006基于邻接矩阵的顶点的删除(C++,附思路)
  5. 关于Scalability的一些思考与疑问
  6. Button或者ImageButton的背景设为透明或者半透明
  7. 设A为n阶非零矩阵,且A^2=A. r(A)=r (0<r<n) 求|5E+A|
  8. [iView warn]: please transfer a valid prop path to form item
  9. 协同过滤推荐算法详解
  10. 新会计准则对传统会计理论的七大变革
  11. thinkphp前台模板运算符
  12. 模块学习笔记-IR2110/IR2130(上)
  13. EV 鼠标被消费者誉为世界“第八大奇迹”内幕
  14. radeon r600 hpd中断处理
  15. 【Vue】ElementUI、ECharts使用 cdn引入
  16. Google VR开发-Cardboard VR SDK头部追踪实现(罗德里格旋转公式)
  17. Arcgis使用教程(十)ARCGIS地图制图之经纬网格添加
  18. python爬取微博评论点赞数_python 爬虫 爬微博 分析 数据
  19. Smart Link Monitor Link
  20. 微软股价创14年新高

热门文章

  1. 电脑提示Your computer is infected!
  2. 在命令提示符下观看ASCII星球大战
  3. 逻辑运算符 [MySQL][数据库]
  4. c语言通讯录二分查找,C语言程序设计 通讯录程序.doc
  5. 【架构】21个软件架构特点解析
  6. MATLAB中的常用函数小结
  7. Nuwa框架的使用步骤以及demo演示
  8. 多台Ubuntu系统电脑使用ntp时间同步
  9. [win32] 实现窗口阴影的3种方法
  10. Istio入口流量路由