我有一个简单的 Go 项目,它是一个 Web 应用程序、一个辅助应用程序和一个共享文件。这些在文件 web.go、worker.go 和 shared.go 中(例如)。
我如何“开始安装”以从此设置创建 2 个二进制文件?如果我只是将所有 3 个文件放在一起,则会出现错误 main redeclared in this block
因为我在同一个包中有 2 个主要函数。
我真的不想将这 3 个文件分成 3 个不同的目录,并在子目录中创建 2 个入口点,只是为了在逻辑上将它们分开。
如何将它们放在同一个目录中并编译 2 个可执行文件?
最佳答案
干净的解决方案是创建三个单独的目录。一个用于 web 程序,一个用于 worker 程序,一个用于它们的共享包。
或者,您也可以使用 build constraints来控制你的构建。例如,GAE 通过提供一个“appengine”构建标记来使用这种方法,该标记可用于在使用 GAE 时提供不同的 main。在这种情况下,您需要将任意构建标记添加到文件的开头(例如 //+build worker
)并相应地调用 go build 工具,方法是包含您的构建标记(类似于go build -tags worker
) 应该可以工作。
关于go - 从一个目录构建多个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24595785/