博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Slog66_自动化工具之make和Makefile1
阅读量:6177 次
发布时间:2019-06-21

本文共 2121 字,大约阅读时间需要 7 分钟。

  • ArthurSlog
  • SLog-66
  • Year·1
  • Guangzhou·China
  • Sep 10th 2018

天之道 损有余而补不足 人之道则不然 损不足以奉有余


开发环境MacOS(High Sierra 10.13.5)

需要的信息和信息源:

开始编码

  • 切换至桌面,创建一个文件夹 makefile_demo
cd ~/Desktop/ && mkdir makefile_demo
  • 切换至makefile_demo路径下
cd makefile_demo
  • 编写一份Makefile文件

Makefile

say_hello:        echo "Hello Malefile"
  • 然后,打开命令行,在当前路径下输入一下指令
make
  • 结果是:
echo "Hello Malefile"Hello Malefile
  • 上面的代码中;
  1. say_hello 是一个方法,这个方法会被命令行执行,
  2. echo "Hello Malefile" 是方法say_hello的主体,echo是系统指令,指令的结果 是在控制台打印“Hello Malefile”这行字
  3. echo "Hello Malefile" 这一行不是我们要的,所以在前面加上@,取消命令本身的输出

Makefile

say_hello:        @echo "Hello Malefile"
  • 重新试试,打开命令行,在当前路径下输入一下指令
make
  • 结果是:
Hello Malefile
  • 现在来写一个常用的Makefile文件,这里面有三个方法

Makefile

say_hello:    @echo "Hello Malefile"generate:    @echo "Create some text file..."    touch file-{1..10}.txtclean:    @echo "Cleaning up..."    rm *.txt
  • 重新试试,打开命令行,在当前路径下输入一下指令
make
  • 结果仍旧是:
Hello Malefile
  • 下面的两个函数并没有执行
  • 我们需要搞点额外的东西,默认执行的方法换一下
  • 我们需要设置一个对象,把要执行的函数填入这个对象里,举个栗子:“.DEFAULT_GOAL := generate”
  • 完整的代码如下:

Makefile

.DEFAULT_GOAL := generatesay_hello:    @echo "Hello Malefile"generate:    @echo "Create some text files..."    touch file-{1..10}.txtclean:    @echo "Cleaning up..."    rm *.txt
  • 然后,打开命令行,在当前路径下输入一下指令
make
  • 结果是:
Create some text files...touch file-{1..10}.txt
  • 现在默认执行的方法就是generate了
  • 但是设置.DEFAULT_GOAL对象一次只能运行一个方法
  • 如果要调用多个方法,就需要设置all对象,栗子如下:

Makefile

all: say_hello generatesay_hello:        @echo "Hello Malefile"generate:        @echo "Creating some files..."        touch file-{1..10}.txtclean:        @echo "Cleaning up..."        rm *.txt
  • 先把刚刚生成的.txt文件都删掉
rm -rf *.txt
  • 然后,打开命令行,在当前路径下输入一下指令
make
  • 结果是:
Hello MalefileCreate some files...touch file-{1..10}.txt
  • ok,现在已经两个方法都执行了
  • 现在,在说一个 “强制所有文件更新” 的方法

Markfile

.PHONY: all say_hello generate cleanall: say_hello generatesay_hello:        @echo "Hello Malefile"generate:        @echo "Creating some files..."        touch file-{1..10}.txtclean:        @echo "Cleaning up..."        rm *.txt
  • 看到上面的栗子,”.PHONY“里有四个“强制所有文件更新”的方法:
  1. all // all里面的方法是say_hello + generate
  2. say_hello
  3. generate
  4. clean
  • 当你的make不起作用的时候,尝试一下设置“.PHONY”对象的值
  • 至此,完成了一个基础的Makefile的了解和编写。

欢迎关注我的微信公众号 ArthurSlog

关注微信公众号“ArthurSlog”

如果你喜欢我的文章 欢迎点赞 留言

谢谢

转载地址:http://fvzda.baihongyu.com/

你可能感兴趣的文章
洛谷 1373 小a和uim之大逃离
查看>>
一不小心把win10的秘钥卸载了解决方法
查看>>
SilverLight之向后台请求数据-WebClient
查看>>
HDU Problem 1260 Tickets 【dp】
查看>>
STL map容器常用API
查看>>
队列的顺序存储---顺序队列
查看>>
Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示
查看>>
第三天
查看>>
connector for python
查看>>
等价类划分的应用
查看>>
Web Service(下)
查看>>
trigger()
查看>>
nvm 怎么安装 ?
查看>>
Java VM里的magic
查看>>
[Node.js]Domain模块
查看>>
Linux操作系统文档
查看>>
利用Tensorflow训练自定义数据
查看>>
c++官方文档-枚举-联合体-结构体-typedef-using
查看>>
[题解]UVA11029 Leading and Trailing
查看>>
利用vue-gird-layout 制作可定制桌面 (一)
查看>>