C++ 和 Bazel
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
回報問題open_in_new
查看原始碼open_in_new
。
。
。
。
夜間
。
。
。
7.3
。
。
7.2
。
。
7.1
。
。
7.0
。
。
6.5
。
。
本頁面含有可協助您在 C++ 專案中使用 Bazel 的資源。連結
教學課程、建構規則,以及有關建構 C++ 的其他資訊
可在專案中使用 Bazel 執行
使用 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 路徑設為與工作區目錄相對應的路徑。
使用引用的 include (#include "foo/bar/baz.h"
) 做為非系統標題,不要使用
角括號 (#include <foo/bar/baz.h>
)。
避免使用 UNIX 目錄快速鍵,例如 .
(目前目錄) 或 ..
(父項目錄)。
舊版或 third_party
程式碼,且需要將指標指向外部
外部存放區等專案存放區
包括要求前置字串
請使用 include_prefix
和
strip_include_prefix
cc_library
規則目標的引數。
下列選用功能
可改善 C++ 專案的健全度您可使用
--features
指令列標記或 features
屬性
repo
、
package
或 cc_*
規則:
parse_headers
功能可讓 C++ 編譯器剖析
(但不編譯) 建構目標及其依附元件中的所有標頭檔案
使用
--process_headers_in_dependencies
旗標。這樣有助於找出僅限標頭程式庫中的問題,並確保
標頭彼此獨立且獨立於
包含。
layering_check
功能會強制要求目標只包含標頭
提供的直接依附元件預設工具鍊支援這項功能
功能,以 clang
做為編譯器的 Linux。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2024-08-23 (世界標準時間)。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"缺少我需要的資訊"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"過於複雜/步驟過多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"過時"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻譯問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/程式碼問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"容易理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"確實解決了我的問題"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u4e0a\u6b21\u66f4\u65b0\u6642\u9593\uff1a2024-08-23 (\u4e16\u754c\u6a19\u6e96\u6642\u9593)\u3002"}
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2024-08-23 (世界標準時間)。"],[],[]]