参照: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 ;
}

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

1.创建makefile文件:

/***
makefile
***/
app: main.o person.o other.o
gcc -o app main.o person.o other.o
main.o:main.c
gcc -c main.c a.h
person.o:person.c a.h b.h
gcc -c person.c
other.o:person.c b.h
gcc -c person.c -o other.o clean:
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.c
gcc -c main.c c.h
person.o : person.c c.h b.h
gcc -c person.c
other.o : person.c b.h
gcc -c person.c -o other.o clean :
rm app $(objects)

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

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

简化如下:

objects = main.o person.o

app : $(objects)
gcc -o app $(objects) main.o : main.c
person.o : person.c c.h b.h clean :
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 = ./ :/home/exbot/wangqinghe : /home/exbot/wangqinghe/makefileTest

CC = gcc

objects = main.o person.o

app : $(objects)
$(CC) -o app $(objects)
@echo "input information : compile finished"
#@echo "输出信息:编译完成" main.o : main.c person.o : person.c c.h b.h .PHONY : clean clean :
rm app $(objects)

make文件基础用法的更多相关文章

  1. C# settings 文件基础用法

    原文 自定义设置项类型 Serializable 修饰的枚举,可作为设置项类型 [Serializable] public enum DeviceBrand { None = 0, [Descript ...

  2. Bootstrap fileinput:文件上传插件的基础用法

    官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...

  3. find命令的基础用法以及按文件修改时间查找文件

    一般文件查找方法: find 命令学好是一件很有趣的事情,也可以帮你在查找系统文件的时候事倍功半,还可以与正则表达式结合使用,功能强大,是一个很好的查找工具.可以整体提高你的系统管理能力. 基础用法 ...

  4. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  5. elasticsearch安装与基础用法

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

  6. Smarty基础用法

    一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...

  7. 前端自动化测试神器-Katalon的基础用法

    前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...

  8. Docker 安装和基础用法

    理解Docker(1):Docker 安装和基础用法 本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 ...

  9. Scss基础用法

    Scss基础用法 一.注释用法: (1)//comment:该注释只是在.scss源文件中有,编译后的css文件中没有. (2)/! /:重要注释,任何style的css文件中都会有,一般放置css文 ...

随机推荐

  1. C++练习 | 单向链表类模板(包含类模板中静态变量初始化格式)

    #include <iostream> #include <string> using namespace std; template <class T> clas ...

  2. C++ 友元(friend关键字)、类中的重载、操作符重载(operator关键字)

    C++ 中友元的用法: 1.在类中使用friend关键字声明 2.类的友元可以是其它类或者具体函数 3.友元不是类的一部分 4.友元不受类中访问级别的限制 5.友元可以直接访问具体类中的所有成员. 友 ...

  3. 数据绑定-POJO对象绑定参数

    测试: 效果:

  4. JS基础_JS的HelloWorld

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. es分数_score衰减函数

    1.按日期衰变 GET news/doc/_search { "query" : { "function_score": { "query" ...

  6. Linux和Windows双系统下Windows系统插入耳机没有声音

    我的笔记本装了Windows7和Debian双系统后,在Windows7下,插入耳机竟然没有声音. 按常规思路分析:首先考虑是耳机问题还是笔记本电脑问题.确定耳机没问题后问题就在笔记本身上了.而问题在 ...

  7. apacheTop

    1.监控 httpd 请求数据,请求统计 apachetop -f /var/www/access_log 2. apachetop -H hits (Will display stats on th ...

  8. react typescript FunctionComponent antd crud

    这个界面跟之前VUE做的一样.并无任何不同之处,只是用react重复实现了一遍. import React, { useState, useEffect } from 'react'; import ...

  9. linux服务器硬件信息查看

    1.linux 查看服务器序列号(S/N) [root@oss20hb106 ~]# dmidecode -t 1 # dmidecode 2.11 # SMBIOS entry point at 0 ...

  10. CentOS6.5安装zabbix3.0

    Server端 搭建LAMP(Linux+Apache+Mysql+PHP)环境 1.安装MySQL #安装地址:https://dev.mysql.com/downloads/repo/yum/ y ...