一个工程中的源文件不计其数,按期类型、功能、模块分别放在若干个文件中,MakeFile文件定义了一系列的规则来制定哪些文件需先要编译、哪些文案需要后编译、哪些文件需要重新编译、甚至于进行更加复杂的操作,因为Makefile文件就像是一个shell脚本一样,也可以执行操作系统的命令
Makefile 带来的好处就是 自动化编译,一旦写好,只需要一个make命令,整个工程完全自动化编译,极大提高了软件开发效率,make是一个命令工具,是一个解释Makefile文件中指令的命令工具,一般来说,大多数的IDE都有这个命令,例如Delphi的make、Visual C++的nmaek、Linux下Gun的make。
vim Makefile
app:add.cpp div.cpp mutil.cpp subtract.cpp
gcc -lstdc++ add.cpp div.cpp mutil.cpp subtract.cpp main.cpp -o app
Makefile
app:add.o div.o mutil.o subtract.o main.o
gcc -lstdc++ add.o div.o mutil.o subtract.o main.o -o app
add.o:add.cpp
gcc -c add.cpp -o add.o
div.o:div.cpp
gcc -c div.cpp -o div.o
mutil.o:mutil.cpp
gcc -c mutil.cpp -o mutil.o
subtract.o:subtract.cpp
gcc -c subtract.cpp -o subtract.o
main.o:main.cpp
gcc -c main.cpp -o main.o
5.Makefile中的变量自定义变量
变量名 = 变量值 var = hello 获取变量:$var
预定义变量
AR:归档维护程序的名称,默认为ar
CC:c编译器的名称,morenwcc
CXX:C++b编译器的名称,默认为g++
$@:目标的完整名称
$<:第一个依赖文件的名称
$^:所有依赖文件
获取变量的值
$()变量名
自动变量只能在规则的命令中使用
app:main.c a.c b.c
$(CC) -c $^ -o $@
示例:
#定义变量
src=add.o div.o mutil.o subtract.o main.o
target=app
$(target):$(src)
$(CC) -lstdc++ $(src) -o $(target)
add.o:add.cpp
gcc -c add.cpp -o add.o
div.o:div.cpp
gcc -c div.cpp -o div.o
mutil.o:mutil.cpp
gcc -c mutil.cpp -o mutil.o
subtract.o:subtract.cpp
gcc -c subtract.cpp -o subtract.o
main.o:main.cpp
gcc -c main.cpp -o main.o
6.模式匹配%.o:%.c
%:通配符,匹配一个字符串
两个%之间匹配的是同一个字符串
#定义变量
src=add.o div.o mutil.o subtract.o main.o
target=app
$(target):$(src)
$(CC) -lstdc++ $(src) -o $(target)
#通配指令
%.o:%.c
$(CC) -c $< -o $@
7.函数$(wildcard PATTERN…)
$(patsubst pattern, replacement,text)
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享名称:Makefile详解-创新互联
文章网址:https://www.cdcxhl.com/article18/hgsdp.html
成都网站建设公司_创新互联,为您提供营销型网站建设、软件开发、网站制作、定制网站、云服务器、定制开发
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联