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

Makefile学习

时间:2020-05-03 16:33:06      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:使用   译文   make   dep   实现   hello   -o   执行   基本   

最开始的时候我们编译文件:

gcc -c hello.c //生成中间文件hello.o

gcc -o hello hello.o//通过hello.o生成可执行文件hello

这种只能一次编译一个文件,如果需要编译多个文件,而且多个文件互相有依赖关系,可以借助makefile来进行编译

 

 

 

makefile的基本格式为:

一:显示规则

目标文件:依赖文件

  编译命令。。。

例如:

client:client.cpp

  g++ -o client client.cpp

上诉例子中,编译的目标文件为client,编译client所需的依赖文件为client.cpp ,通过执行g++ -o client client.cpp可以生成目标文件client

.PHONY 伪目标命令

例如

.PHONY
clean:
    rm -rf *.o client

 

二:变量

(=):替换

(+=) :追加

(:= ):恒等于

使用变量:$(变量名)

 

三:隐含规则

%.c、%.o:任意的.c、.o文件

*.c *.o : 所有的.c .o 文件

%.o:%.c
    $(GXX) -c %.c -o %.o

自动匹配需要生成的.o文件,然后通过 $(GXX) -c %.cpp 生成所需要的.o文件

 

四:通配符

$^:当前语句的依赖文件

$@:当前语句的目标文件

$<:当前语句的依赖文件的第一个文件

因此可以将上面的自动生成.o的语句改成如下所示

%.o:%.c
    $(GXX) -c $< -o $@

  

五:使用shell命令

可以使用shell命令自动查找当前文件夹下的.c 和.h文件,通过通配符实现自动化编译

SRC:=$(shell find ./ -name "*.c")
DEPS:=$(shell find ./ -name "*.h")

//每个.c文件都需要生成.o文件,此时的obj可以将查找到的.c 全部替换为.o
OBJ:= $(SRC:%.c=%.o)

$(TAR):$(OBJ)
    $(GCC) -o $@ $^

%.c:%.o $(DEPS)
    $(GCC) -c $< -o $@

  

 

Makefile学习

标签:使用   译文   make   dep   实现   hello   -o   执行   基本   

原文地址:https://www.cnblogs.com/flycc/p/12822128.html

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