GO语音的makefile的安装加使用和遇到的错误

mac2024-05-19  30

很多时候,我们需要运行多个命令来完成一件事情

可以有两个方案:

             1. 写shell脚本

                        1.build.sh

                        2.比较复杂,不通用

             2.makefile

                       1.定义一些常规命令(build,clean等)

                       2.非常简单(跟编程语音无关,不受限制)

                       3.可以完成对项目,源码进行编译构建

基本规则:

target: dependencies command

1.target:目标

                1. 要生成的目标文件的名字:blockchain

                2. 只是一个动作,是一个标签:clean

2. dependencies:依赖

                1. 是依赖,通常是文件,完成target所需要的输入

3. command:命令

                1. shell命令,一条语句一行,前面有一个

安装make命令

linux:自带的

windows:make-3.81.exe      百度云连接

安装之后,将make.exe所在的目录添加到PATH中,例如:C:\Program Files (x86)\GnuWin32\bin

 

在工程目录下,创建文件: makefile或者Makefile, make命令在执行时会自动寻找这两个文件。

现在写一个makefile   内容是

#编译命令 blockchain: go build -o blockchain *.go clean: rm blockchain

执行:          1. make blockchain ==> 正常执行           2. make ==》会自动执行第一个标签          3. make clean ==》删除文件

.PHONY

我们遇到的问题:当执行命令时,如果在当前目录下面存在了与标签(命令)同名的文件,那么命令不会生效,不 会触发

当我在再次执行make blockchain时候出现错误(make: “blockchain”已是最新。)

u@u-ThinkPad-S2:~/goProject/src$ make blockchain make: “blockchain”已是最新。

解决办法:使用.PHONY关键字,将命令写makefile中

.PHONY:blockchain clean #编译命令 blockchain: go build -o blockchain *.go clean: rm blockchain

我们在进行执行make blockchain 成功了

u@u-ThinkPad-S2:~/goProject/src $ make blockchain go build -o blockchain *.go

然后我们觉得两个命令可不可以一起执行

我们可以这样写

.PHONY:blockchain clean app:clean blockchain #编译命令 blockchain: go build -o blockchain *.go clean: rm blockchain

直接执行make app  就可以执行多个命令

u@u-ThinkPad-S2:~/goProject/src $ make app rm blockchain go build -o blockchain *.go

我们看app后面有两个  一个是clean  和blockchain

有可能出现的错误是 clean这个命令出错误了 会导致后面的命令执行

我们先删除blockchain文件 

 

u@u-ThinkPad-S2:~/goProject/src $ make clean rm blockchain u@u-ThinkPad-S2:~/goProject/src $ make app rm blockchain rm: 无法删除'blockchain': 没有那个文件或目录 makefile:8: recipe for target 'clean' failed make: *** [clean] Error 1

这个就是错误  解决方法就改成app:blockchain clean

 

 

最新回复(0)