ホームページ  >  記事  >  バックエンド開発  >  コンパイル中にアーキテクチャに基づいて Go ソース ファイルを除外するにはどうすればよいですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 00:00:02190ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。