简单了解学习 makefile

在makefile中我们可以根据makefile中的一系列规定 去将我们的源代码生成指定的目标文件 所以可以帮助我们去自动编译以及打包程序等各种操作

1 makefile的基本原理:任何版本的shell将会包含make命令,当我们执行make命令时,make会操作makefile中的定义的命令 


2 编写makefile的基本格式 : target():dependnce
                                                    command
(1)声明目标(Target):指定要构建的目标名称和依赖关系。目标可以是可执行文件、库文件、中间文件等。
(2)定义依赖关系(Dependences):指定每个目标所依赖的源文件、头文件或其他目标。
(3)定义构建规则(Build Rules):为每个目标定义构建规则,描述如何从依赖生成目标。这包括编译源文件、链接目标文件等命令。


3 关于伪目标格式:.PHONY:target ,防止我们在makefile中 创建了clean该目标 但是文件夹下也有一个名叫clean的文件或者文件夹 执行make clean时会出现clean:up to date的错误(当目录下由于make 同名的文件时 执行make命令就会错误)。


4 给makefile 添加变量 : 变量:依赖


5 模式匹配 :使用模式匹配对脚本进行优化
    (1)%代表每一个  *代表所有
    (2)$@表示目标  $^ 表示全部依赖  $<表示第一个依赖     


6 两个函数(makefile中用的多的两个函数)
    wildcard函数  $(wildcard ./*.cpp) 表示获取当前目录下所有.cpp文件
    patsubst函数  $(patsubst %.cpp, %.o, ./*.cpp) 将对应的.cpp文件名全部替换.o文件名

 

 以下这里简单用代码演示一下

这里用生成一个动态库举个例子

根据上述对makefile的简单讲解 自己解析出图中的代码 

有什么错误请提出来

target = libsub.so
cc = g++
src = $(wildcard *.cpp)
obj = $(patsubst %.cpp, %.o, $(src))

lib_local = ../lib

$(target):$(obj)
	$(cc) -shared $^ -o $@
	mv $(target) $(lib_local)/

%.o:%.cpp
	$(cc) -FPIC -c $^

.PHONY:clean
clean:
	rm $(obj) $(lib_local)/$(target)		

以上就是简单介绍了makefile,希望对你有所帮助

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值