前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >makefile基本使用

makefile基本使用

作者头像
aruba
发布2020-07-02 17:13:03
1K0
发布2020-07-02 17:13:03
举报
文章被收录于专栏:android技术android技术
在linux和unix中,有一个强大的实用程序,叫make,可以用它来管理多模块程序的编译和链接,直至生成可执行文件。
make程序需要一个编译规则说明文件,称为makefile,makefile文件中描述了整个软件工程的编译规则和各个文件之间的依赖关系。
makefile就像是一个shell脚本一样,其中可以执行操作系统的命令,它带来的好处就是我们能够实现“自动化编译”,一旦写好,只要一个make命令,整个软件功能就完全自动编译,提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说大多数编译器都有这个命令,使用make可以是重新编译的次数达到最小化。
makefile文件的规则可以非常复杂,比C程序还要复杂,平常使用实际用不了那么多
接下来,介绍它的使用方法:
该文件夹下含有很多个c文件,如果我们想要每个c文件生成对应的可执行文件,则需要在控制台敲编译命令很多次,而且每次重新编译都需要重新敲命令
第一种方法:在该文件夹下创建makefile文件,内容如下:
代码语言:javascript
复制
#执行make时默认执行第一个target,冒号后面表示需要执行的target
all:book1 book2 book3

#对应上面需要执行的target,后面表示需要依赖源程序
book1:book1.c
        gcc -o book1 book1.c

book2:book2.c
        gcc -o book2 book2.c

book3:book3.c
        gcc -o book3 book3.c

clean:
        rm -rf book1 book2 book3
以后每次编译,都只需要执行make就可以了,但是加一个c文件就得在makefile中再新增一个target
第二种方法:
代码语言:javascript
复制
#定义变量
OBJECT=book1 book2 book3

all:$(OBJECT)

#通配符 %表示任意字符 $@表示冒号前target $^表示冒号后得源文件
%:%.c
        gcc -o $@ $^

clean:
        rm -rf $(OBJECT)
使用通配符非常便利,可以识别文件夹下得目标文件名,按照我们写得规则,只需要2行代码就可以批量处理
第三种方法:
代码语言:javascript
复制
#定义变量
#找到所有.c文件,放入变量
SOURCE=$(wildcard *.c)
#替换SOURCE变量中得值,去掉.c,放入OEJECT变量
OBJECT=$(patsubst %.c,%,$(SOURCE))

all:$(OBJECT)

#通配符 %表示任意字符 $@表示冒号前target $^表示冒号后得源文件
%:%.c
        gcc -o $@ $^

clean:
        rm -rf $(OBJECT)
利用函数查找所有.c文件,存入变量,编写一次就再也不需要改动了
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在linux和unix中,有一个强大的实用程序,叫make,可以用它来管理多模块程序的编译和链接,直至生成可执行文件。
  • make程序需要一个编译规则说明文件,称为makefile,makefile文件中描述了整个软件工程的编译规则和各个文件之间的依赖关系。
  • makefile就像是一个shell脚本一样,其中可以执行操作系统的命令,它带来的好处就是我们能够实现“自动化编译”,一旦写好,只要一个make命令,整个软件功能就完全自动编译,提高了软件开发的效率。
  • make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说大多数编译器都有这个命令,使用make可以是重新编译的次数达到最小化。
  • makefile文件的规则可以非常复杂,比C程序还要复杂,平常使用实际用不了那么多
  • 接下来,介绍它的使用方法:
  • 该文件夹下含有很多个c文件,如果我们想要每个c文件生成对应的可执行文件,则需要在控制台敲编译命令很多次,而且每次重新编译都需要重新敲命令
  • 第一种方法:在该文件夹下创建makefile文件,内容如下:
  • 以后每次编译,都只需要执行make就可以了,但是加一个c文件就得在makefile中再新增一个target
  • 第二种方法:
  • 使用通配符非常便利,可以识别文件夹下得目标文件名,按照我们写得规则,只需要2行代码就可以批量处理
  • 第三种方法:
  • 利用函数查找所有.c文件,存入变量,编写一次就再也不需要改动了
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档