我正在写一个Go包,让我们称之为酷的东西。我想包含一个example.go文件,该文件运行来自coolstuff API的示例。但是默认的Makefile不会构建酷炫的包和example.go,抱怨道:
example.go:1: package main; expected coolstuff
example.go:3: can't find import: coolstuff我怎样才能a)编译这个包,b)安装这个包,这样我以后写的任何代码都能知道如何找到酷的东西,c)构建依赖于酷的东西的example.go?
我是否需要两个Makefiles,一个用于包,另一个用于example.go?
发布于 2011-10-10 16:09:07
有几种方法可以做到这一点。
1)这不完全是您所描述的,但是可以将一个名为example_test.go的文件添加到您的coolstuff包中。如果你只是安装你的包,这个文件将被忽略,但是当你在你的coolstuff包中执行gotest时,gotest将自动构建你的包,包括所有的*_test.go文件并运行它们。在我看来,这是最简单的方法,因为您不必处理多个包,而且您还可以提供许多独立的示例/测试用例。未来的go版本将能够将这些示例添加到您的godoc pkg文档中。
2)如果你对使用Makefiles感到不舒服,那么你可能想仔细看看goinstall。您可以设置GOPATH环境变量来定义您自己的项目目录。页面底部给出了一个适用于goinstall的目录结构示例。(“bar”类似于你的"coolstuff pkg“,"qux”可能是你的“示例”)。goinstall会自动为你找出所有这些构建依赖项。
3)使用Makefile也是可能的。创建其中的两个文件,一个是基于Make.pkg的,用于您的凉爽包目录,另一个是基于Make.cmd的,用于您的示例目录,听起来是个好主意。你可以找到一些go Makefiles here的例子。
https://stackoverflow.com/questions/7707309
复制相似问题