2016-03-24 6 views
2

は、しかし、CGOは、だから私は何をすべきかを持っているんファイルをコンパイルしないようにするにはどうすればよいですか?私は</p> <pre><code>// +build !windows </code></pre> <p>言う通常のゴーファイルの

をコンパイル取得するCコードとしてこれを解釈しますか?

+0

あなたはCGOを無効にする、または単にファイルを無視しますか? – JimB

+0

私が理解しているところでは、Cコードとして指定されたファイルは、デフォルトでgcかgccを使用してコンパイルされていますので、gcにファイルを無視してここに適用する方法を理解することをお勧めします。 – evanmcdonnal

+0

私はそれを全く処理したくありません(goまたはgcc) – pm100

答えて

6

ビルド制約は、パッケージ宣言の前に指定する必要があります。

誤った

package mypackage 

// +build !windows 

// #include <header.h> 
// 
// ... 
import "C" 

正しい

// +build !windows 

package mypackage 

// #include <header.h> 
// 
// ... 
import "C" 
+1

脇に - 私は空白行にどのように敏感なcgoがあるかを知ることはできません。 +ビルドラインとパッケージの間のラインを逃します。ビルドラインは無視されます。 #cgo行と "C"インクルードの間に行を追加すると、その(#cgo)は無視されます - 実際には – pm100

+2

@ pm100であり、実際には文書化されています:[ビルド制約をパッケージドキュメントと区別するために、制約には空白行を続ける必要があります。](https://golang.org/pkg/go/build/) – OneOfOne

+0

@OneOfOneはcgoフラグの制約でない限り、空行を持たない – pm100

関連する問題

 関連する問題