码迷,mamicode.com
首页 > 其他好文 > 详细

make文件基础用法

时间:2019-06-06 21:04:11      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:cts   目标   依赖关系   头文件   home   编译   int   工作   信息   

参照: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.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 = ./2019060601 :/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文件基础用法

标签:cts   目标   依赖关系   头文件   home   编译   int   工作   信息   

原文地址:https://www.cnblogs.com/wanghao-boke/p/10986723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!