为了账号安全,请及时绑定邮箱和手机立即绑定

go的多包makefile示例

go的多包makefile示例

Go
繁花如伊 2021-04-08 10:11:03
我正在尝试设置一个多包go项目,例如./main.go./subpackage1/sub1_1.go./subpackage1/sub1_2.go./subpackage2/sub2_1.go./subpackage2/sub2_2.go其中main.go导入subpackage1和subpackage2。subpackage2导入subpackage1。我一直在寻找go makefile示例,但找不到任何支持这种设置的示例。任何想法?
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

这样的事情应该工作


# Makefile

include $(GOROOT)/src/Make.$(GOARCH)

all:main

main:main.$O

    $(LD) -Lsubpackage1/_obj -Lsubpackage2/_obj -o $@ $^

%.$O:%.go  subpackage1 subpackage2

    $(GC) -Isubpackage1/_obj -Isubpackage2/_obj -o $@ $^

subpackage1:

    $(MAKE) -C subpackage1

subpackage2:

    $(MAKE) -C subpackage2

.PHONY:subpackage1 subpackage2


# subpackage1/Makefile

TARG=subpackage1

GOFILES=sub1_1.go sub1_2.go

include $(GOROOT)/src/Make.$(GOARCH)

include $(GOROOT)/src/Make.pkg


# subpackage2/Makefile

TARG=subpackage2

GOFILES=sub2_1.go sub2_2.go

include $(GOROOT)/src/Make.$(GOARCH)

include $(GOROOT)/src/Make.pkg

GC+=-I../subpackage1/_obj

LD+=-L../subpackage1/_obj

sub2_1.$O sub2_2.$O:subpackage1

subpackage1:

    $(MAKE) -C ../subpackage1

.PHONY:subpackage1

如果不安装子软件包,则需要显式设置包含路径。提供的makefile Make.pkg主要用于构建软件包,这就是为什么它仅包含在子软件包makefile中的原因。


查看完整回答
反对 回复 2021-04-26
  • 3 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信