コンパイル中にアーキテクチャに基づいて Go ソース ファイルを除外するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-01 00:00:02
オリジナル
189 人が閲覧しました

How to Exclude Go Source Files Based on Architecture During Compilation?

コンパイル時にアーキテクチャによって Go ソース ファイルを除外する方法

問題:

複数のパッケージを含む Go プログラムをコンパイルする場合、一部のパッケージに特定のアーキテクチャにのみ適用される依存関係 (CGo など) が含まれている場合、エラーが発生する可能性があります。このような場合、非ターゲット アーキテクチャのコンパイル中にそのようなファイルを除外することをお勧めします。

解決策:

Go のビルド制約は、条件付きで または を含める方法を提供します。ターゲット アーキテクチャを含むさまざまな条件に基づいてソース ファイルを除外します。使用方法は次のとおりです:

  • ファイルにビルド制約を追加します:

    除外するソース ファイルの先頭に、 // build で始まるコメント行。このディレクティブに続いて、ファイルをコンパイルする条件を指定します。たとえば、Linux を除くすべてのアーキテクチャのファイルを除外するには:

    // +build !linux
    ログイン後にコピー

    386 を除くすべてのアーキテクチャのファイルを除外するには:

    // +build !386
    ログイン後にコピー

    CGo が有効な場合にファイルを除外するには:

    // +build !cgo
    ログイン後にコピー
  • を使用するファイル命名規則:

    または、ファイル命名規則を使用してビルド制約を指定できます。たとえば、ファイルに package_linux.go という名前を付けると、そのファイルは Linux 用にビルドする場合にのみ組み込まれます。

例:

次のことを考慮してください。ディレクトリ構造:

- main.go
- linux.go
- windows.go
ログイン後にコピー
  • main.go はメインの Go ですfile.
  • linux.go には Linux のみのコードが含まれています。
  • windows.go には Windows のみのコードが含まれています。

Linux 用にプログラムをコンパイルするには、次のビルド制約を linux.go に追加します:

// +build linux
ログイン後にコピー

Windows 用にプログラムをコンパイルするには、次のビルド制約を linux.go に追加します。 windows.go:

// +build windows
ログイン後にコピー

ビルド制約を使用すると、さまざまなアーキテクチャのコンパイル中に必要なコードのみが確実に含まれるようになり、ターゲット以外でアーキテクチャ固有のファイルをコンパイルしようとする問題が解決されます。プラットフォーム。

以上がコンパイル中にアーキテクチャに基づいて Go ソース ファイルを除外するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!