用Makefile管理API项目
参考链接:https://www.cnblogs.com/wang_yb/p/3990952.html
为什么需要Makefile
Go 语言的 go
命令自带源码管理功能,比如通过 go build
可以实现对源码的编译,但是 Go 自带的源码管理功能在实际项目中还是满足不了需求,有时候执行 go build
时,会附带很多编译参数,直接执行 go build
命令也会很麻烦。这时候一般是通过更专业的 Makefile 来管理源码,通过 Makefile 可以实现诸如:编译、安装、清理等功能,其实需要的管理功能都可以通过 Makefile 来添加,Makefile 生来就是做这些的。
Makefile 简介
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 Makefile 就像一个 Shell 脚本一样,其中也可以执行操作系统的命令(摘自百度百科)。
makefile 的规则
Makefile 基本格式如下:
target ... : prerequisties ...
command
...
其中:
- target - 编译文件要生成的目标
- prerequisites - 编译文件需要的依赖
- command - 依赖生产目标所需要执行的命令(任意的 shell 命令),Makefile中的命令必须以
[tab]
开头
比如我们平时使用的 gcc a.c b.c -o test
这里的 test 就是我们要生成的目标, a.c、b.c就是我们生成目标需要的依赖,而 gcc a.c b.c -o test
则是命令。将这行命令用 Makefile 的方式来写就是:
test: a.c b.c
gcc a.c b.c -o test
Go API Server 添加 Makefile
在apiserver根目录下新建文件 Makefile
,内容为:
all: gotool
@go build -v .
clean:
rm -f apiserver
find . -name "[._]*.s[a-w][a-z]" | xargs -i rm -f {}
gotool:
gofmt -w .
go tool vet . |& grep -v vendor;true
ca:
openssl req -new -nodes -x509 -out conf/server.crt -keyout conf/server.key -days 3650 -subj "/C=DE/ST=NRW/L=Earth/O=Random Company/OU=IT/CN=127.0.0.1/emailAddress=xxxxx@qq.com"
help:
@echo "make - compile the source code"
@echo "make clean - remove binary file and vim swp files"
@echo "make gotool - run go tool 'fmt' and 'vet'"
@echo "make ca - generate ca files"
.PHONY: clean gotool ca help
上面的 Makefile 文件中,.PHONY
是个伪目标,形式上是一个目标,但是不需要依赖,伪目标一般只是为了执行目标下面的命令(比如 clean 就是伪目标)。@
放在行首,表示不打印此行。默认在编译的过程中,会把此行的展开效果字符串打印出来。
上面的 Makefile 实现了如下功能:
make
:执行go build -v .
生成 Go 二进制文件make gotool
:执行gofmt -w .
和go tool vet .
(格式化代码和源码静态检查)make clean
:做一些清理工作:删除二进制文件、删除 vim swp 文件make ca
:生成证书make help
:打印 help 信息
本文链接:https://lg1024.com/post/makefile_01.html,参与评论 »
--EOF--
发表于 2018-07-04 21:20:00。
本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。更多说明 »
提醒:本文最后更新于 226 天前,文中所描述的信息可能已发生改变,请谨慎使用。
专题「Linux相关知识」的其它文章 »
- Vim中优雅的查找和替换 (Nov 23, 2018)
- Linux grep 与正则表达式 (Oct 02, 2018)
- linux 权限管理 chown (Jul 31, 2018)
- linux awk 介绍 (Jul 28, 2018)
- 使用curl下载上传ftp (Dec 20, 2017)
Comments