本頁提供多項資源,可協助您使用 Bazel 處理 C++ 專案。這個頁面會連結至使用 Bazel 建構 C++ 專案的教學課程、建構規則及其他資訊。
使用 Bazel
下列資源可協助您在 C++ 專案中使用 Bazel:
最佳做法
除了一般的 Bazel 最佳做法以外,以下是 C++ 專案特有的最佳做法。
版本檔案
建立 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
引數。