参照:https://www.jianshu.com/p/0b2a7cb9a469

创建工作目录,包含一下文件

  • main.c
  • person.c
  • b.h
  • c.h
/***
c.h
***/
//this is c.h

/***
b.h
***/
//this is b.h

/***
main.c
***/
#include<stdio.h>
//#include"a1.h"
//#include"b.h"int main()
{printf("The Version 1.1\n");return 0;
}

如果main.c文件中加上注释的头文件会生成对应的b.h.gch文件,此处存疑

1.创建makefile文件:

/***
makefile
***/
app: main.o person.o other.ogcc -o app main.o person.o other.o
main.o:main.cgcc -c main.c a.h
person.o:person.c a.h b.hgcc -c person.c
other.o:person.c b.hgcc -c person.c -o other.oclean:rm app main.o person.o other.o

2.定义变量,代替目标文件,简化代码:

objects = main.o person.o other.o
app : $(objects)gcc -o app $(objects)
main.o : main.cgcc -c main.c c.h
person.o : person.c c.h b.hgcc -c person.c
other.o : person.c b.hgcc -c person.c  -o other.oclean :rm app $(objects)

3.使用makefile自动推导机制,简化指令语句

在编译过程中,哪些类型的文件的编译需要哪些指令是固定的,所以makefile文件可以从依赖关系自动推导出后面要执行的语句

简化如下:

objects = main.o person.oapp : $(objects)gcc -o app $(objects)main.o : main.c
person.o : person.c c.h b.hclean :rm app $(objects)

只有依赖声明下面没有任何语句,makefile才会自动推导,否则执行指定文件。

注意:这里去掉了other.o,是因为other.o依赖person.c手动生成的other.o,这里的makefile只会生成与依赖文件相同名字的.o文件。

4.如果文件不在一个目录下,需要指定目录,只需要在makefile的第一行添加

VPATH = path1 : path2 :path3

makefile文件会自动按照路径顺序,依次查找文件

如图:

person.c文件在  /home/exbot/wangqinghe/makefileTest

b.h文件在/home/exbot/wangqinghe

c.h 文件在当前目录中2019060601 文件夹下

于是makefile 如下:

VPATH = ./2019060601 :/home/exbot/wangqinghe : /home/exbot/wangqinghe/makefileTestCC = gccobjects = main.o person.oapp : $(objects)$(CC) -o app $(objects)@echo "input information : compile finished"#@echo "输出信息:编译完成"main.o : main.cperson.o : person.c c.h b.h.PHONY : cleanclean :     rm app $(objects)

转载于:https://www.cnblogs.com/wanghao-boke/p/10986723.html

make文件基础用法相关推荐

  1. Typora基础用法:pandoc安装,导入导出word文档,pdf文件。设置图片目录

    点击观看B站视频 Typora基础用法:pandoc安装,导入导出word文档,pdf文件.设置图片目录. 一. pandoc安装 首次安装完typora,是没法导入的,需要安装pandoc 选择[请 ...

  2. 使用POI操作Excell文件的基础用法

    文章目录 第一步 创建一个普通MAVEN项目 第二步 创建java类 第三步 在ReadExcel类中进行excel文件的读取操作 1.创建工作簿 workbook飘红的话自行导包即可 2.拿到工作表 ...

  3. struct用法_精讲响应式webclient第1篇-响应式非阻塞IO与基础用法

    笔者在之前已经写了一系列的关于RestTemplate的文章,如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HT ...

  4. ORACLE的基础用法

    ORACLE的基础用法 转 自:http://blog.163.com/kelly_19831017/blog/static/6196787020083133348873/ sqlplus sys/o ...

  5. Python语言学习:python语言的特点、入门、基础用法之详细攻略

    Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...

  6. [系统安全] 四十四.APT系列(9)Metasploit技术之基础用法万字详解及防御机理

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. [系统安全] 四.OllyDbg动态分析工具基础用法及Crakeme逆向破解

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  8. [渗透攻防] 二.SQL MAP工具从零解读数据库及基础用法

    这是最近学习渗透和网站攻防的文章,希望能深入地学习这部分知识,自己作为一个初学者,前一篇文章从数据库原理解读了防止SQL注入,这篇文章通过SQLMAP工具简单介绍SQL注入及用法.自己仍在慢慢探索网络 ...

  9. elasticsearch安装与基础用法

    来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...

最新文章

  1. 如何在Python中调用Windows的cmd命令?
  2. python语言的理解-使用Python语言理解递归
  3. 伪类的使用之如何在一段文字前面添加一个点
  4. 三年Java开发,你连基础的JVM运行时内存布局都忘了
  5. 树叶贴画机器人_洪山广场举办“落叶节”,树叶树枝拼贴出冬日风景
  6. 利用burp实现弱密码破解
  7. 利用CEF山寨一个翻译器
  8. Err.number错误号和错误说明(一)
  9. 五、bootstrap-fileinput
  10. VS C++ 从字符串中查找字符最后一次出现的位置 strrchr
  11. ImportError: DLL load failed while importing win32file
  12. 哈里王子与魔兽圣骑士(Paladin)
  13. 重庆云阳2021云中高考成绩查询,2021年云阳县高考状元是谁及其成绩名单
  14. uni-app解析及配置(小程序对应的转换)
  15. 基于 SpringBoot+Vue 的开源数据可视化分析工具
  16. 大数据计数原理1+0=1这你都不会算(一)No.47
  17. 挪威飞鸽_我成为挪威高级分析初级顾问的美好旅程
  18. 基于高通410c开发板,开发android端家庭控制中心APP(1)
  19. windows7更换系统时间服务器,Windows7系统更改时间同步服务器
  20. [黑马IOS自学第十篇]OC语言基础,面向对象概念,类学习

热门文章

  1. MVC3中的视图文件
  2. Linux下动态库使用小结
  3. 前后对接数字几_开源数字货币交易所开发学习笔记(1)——系统架构
  4. java如何找重复数字_Java如何找出数组中重复的数字
  5. linux 无法找到函数定义,找到定义Linux函数的位置
  6. c语言奇葩错误,6个奇葩的(hello,world)C语言版(转)
  7. 优化方案电子版_关于小区分支道路整修设计方案的讨论稿(No.2020121)
  8. Win32ASM代码基本模块
  9. linux_perf_tools_full
  10. leetcode 236. 二叉树的最近公共祖先 思考分析