本頁面提供的資源可協助您在 C++ 專案中使用 Bazel。這份文件會連結至教學課程、建構規則,以及其他與使用 Bazel 建構 C++ 專案相關的資訊。
使用 Bazel
下列資源可協助您在 C++ 專案中使用 Bazel:
最佳做法
除了一般 Bazel 最佳做法外,下方也提供 C++ 專案的最佳做法。
BUILD 檔案
建立 BUILD 檔案時,請遵循下列規範:
每個
BUILD
檔案應包含目錄中每個編譯單元的cc_library
規則目標。您應盡可能細分 C++ 程式庫,以便盡可能提高增量性並並行建構。
如果
srcs
中只有一個來源檔案,請將程式庫命名為該 C++ 檔案的名稱。這個程式庫應包含 C++ 檔案、任何相符的標頭檔案,以及程式庫的直接依附元件。例如:cc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
在檔案中,每個
cc_library
目標都應使用一個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
程式碼需要指向專案存放區以外的項目,例如外部存放區包含需要前置字元的項目,請在cc_library
規則目標上使用include_prefix
和strip_include_prefix
引數。