このページには、C++ プロジェクトで Bazel を使用する場合に役立つリソースが記載されています。リンク先 チュートリアル、ビルドルールなど、C++ のビルドに固有の情報が 紹介しました。
Bazel の使用
次のリソースは、C++ プロジェクトで Bazel を使用する際に役立ちます。
- チュートリアル: C++ プロジェクトのビルド
- C++ の一般的なユースケース
- C/C++ のルール
- C++ ツールチェーン構成
- チュートリアル: C++ ツールチェーンの構成
- C++ ルールとの統合
ベスト プラクティス
Bazel の一般的なベスト プラクティスに加えて、以下があります。 C++ プロジェクトに固有のベスト プラクティスを紹介します。
BUILD ファイル
BUILD ファイルを作成する際は、以下のガイドラインに従ってください。
各
BUILD
ファイルには 1 つのcc_library
を含める必要があります。 ディレクトリ内のコンパイル単位ごとに、ルール ターゲットを指定します。C++ ライブラリは可能な限り細かく インクリメンタリティを最大化してビルドを並列化できます
srcs
にソースファイルが 1 つしかない場合は、ライブラリに その C++ ファイルの名前。このライブラリには、一致する C++ ファイルを含める必要があります。 ヘッダー ファイル、ライブラリの直接依存関係などです。例:cc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
ファイル内の
cc_library
ターゲットごとに 1 つのcc_test
ルール ターゲットを使用します。キャンペーンに ターゲット[library-name]_test
とソースファイル[library-name]_test.cc
。 たとえば、上記のmylib
ライブラリ ターゲットのテスト ターゲットは、次のようになります。 次のようになります。cc_test( name = "mylib_test", srcs = ["mylib_test.cc"], deps = [":mylib"] )
含めるパス
インクルード パスについては、次のガイドラインに従ってください。
すべてのインクルード パスは、ワークスペース ディレクトリからの相対パスにします。
システム以外のヘッダーには引用符で囲まれたインクルード(
#include "foo/bar/baz.h"
)を使用。 山かっこ(#include <foo/bar/baz.h>
)。.
(カレント ディレクトリ)や..
などの UNIX ディレクトリ ショートカットを使用しない (親ディレクトリ)のように構成されます。以前のコードまたは
third_party
コードに、 プレフィックスを必要とする外部リポジトリなど、プロジェクト リポジトリ。include_prefix
とstrip_include_prefix
cc_library
ルール ターゲットの引数。