2011-10-09 9 views
0

私はGoパッケージを書いています。それを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 

I a)は、パッケージをコンパイルすることができ、私が書いた将来のコードがどのように知っているように、b)のパッケージをインストールする方法クールスタッフを見つけ、c)coolstuffに依存するexample.goをビルドしますか?

2つのMakefileが必要ですか?1つはパッケージ用、もう1つはexample.goですか?

答えて

3

これを行うにはいくつかの方法があります。

1)これはあなたの説明どおりではありませんが、example_test.goというファイルをcoolstuffパッケージに追加することは可能です。パッケージをインストールするだけの場合、このファイルは無視されますが、coolstuffパッケージ内でgotestを実行すると、gotestは自動的にすべての*_test.goファイルを含むパッケージをビルドして実行します。あなたがいくつかのパッケージを扱う必要はなく、多くの独立したサンプル/テストケースを提供することができるので、これは私の意見では最も簡単な方法です。将来のgoバージョンでは、それらの例をgodoc pkgのドキュメントに追加することができます。

2)Makefileを使用することに不快感を感じる場合は、goinstallをよく見てみるとよいでしょう。 GOPATH環境変数を設定して、独自のプロジェクトディレクトリを定義することができます。 goinstallに適したディレクトリ構造の例は、ページの下部に示されています。 ( "bar"はあなたの "coolstuff pkg"に似ていて、 "qux"はあなたの "example"かもしれません)3)makefileを使うことも可能です。あなたのcoolstuffパッケージディレクトリ用のMake.pkgに基づいたものと、あなたのサンプルディレクトリ用のMake.cmdに基づく別のものが良いアイデアのように聞こえます。

+0

私は単にexample.goとそのMakefileだけのためのディレクトリを作ると思います。 – mcandre