2011-10-09 79 views
0

我正在寫一個圍棋包,讓我們稱之爲coolstuff。我想包含一個運行coolstuff API的example.go文件。但缺省的Makefile不會建立coolstuff包和example.go,抱怨:轉到Makefile的困惑

example.go:1: package main; expected coolstuff 
example.go:3: can't find import: coolstuff 

我如何能)編譯打包,B)安裝包,以便今後任何代碼我寫的就知道如何找到coolstuff,和c)建立example.go,這取決於coolstuff?

我是否需要兩個Makefile中,一個包和一個用於example.go?

回答

3

有幾種方法可以做到這一點。

1)這不正是你所描述的東西,但也可以到一個名爲example_test.go文件添加到您的coolstuff包。如果你只是goinstall你的包,這個文件將被忽略,但是當你正在執行gotest您coolstuff包內,然後將gotest自動生成你的包,包括所有*_test.go文件並運行它們。這在我看來是最簡單的方法,因爲您不必處理幾個軟件包,而且您還可以提供許多獨立的示例/測試用例。未來版本將能夠將這些示例添加到您的godoc pkg文檔中。

2)如果你覺得不舒服使用Makefile文件,那麼你可能想在goinstall仔細看看。您可以設置GOPATH環境變量來定義您自己的項目目錄。在頁面底部給出了一個適用於goinstall的示例目錄結構。 (「bar」類似於你的「coolstuff pkg」,「qux」可能就是你的「例子」),goinstall會自動找出所有這些依賴關係。其中兩個,一個是基於Make.pkg的coolstuff軟件包目錄,另一個是基於make.cmd的示例目錄,聽起來像個好主意。你可以找到一些例子,去Makefiles here

+0

我想我只是爲example.go和它的Makefile創建一個目錄。 – mcandre