编译 go 程序可以使用自带的一些 Makefile 脚本来简化编写 Makefile 。官方的文档过于简略,没提到需要指定依赖包位置的方法。翻过那几个脚本代码后,发现原来有 LDIMPORTS 和 GCIMPORTS 可以指定。
比如:
include $(GOROOT)/src/Make.inc LDIMPORTS=-L ./pkg/_obj GCIMPORTS=-I ./pkg/_obj TARG=tool GOFILES=\ tool.go\ include $(GOROOT)/src/Make.cmd
GCIMPORTS 指定编译阶段的参数,对 Make.cmd,Make.pkg 都有效。LDIMPORTS 指定链接阶段的参数,这个对 Make.pkg 就没用了。
另外,还可以用类似 CLEANFILES+= pkg/_obj ,在 make clean 的时候来清理更多的东西。
以及
all: pkg/_obj tool pkg/_obj: cd pkg; make
这样的方法在依赖包未编译时,自动编译依赖包。