除錯
除錯 Protocol Buffers 中的常見問題。
Protobuf 使用者遇到的常見問題和除錯場景。
Bazel:解決預構建 Protoc 的問題
正如這篇新聞文章中所述,Bazel 7 及更高版本支援使用預構建 protoc 的構建。當一切配置正確時,這可以節省大量構建時間,減少日誌量,並消除在非 C++ 實現中對 C++ 工具鏈的需求。
為防止從原始碼編譯 protoc,請將以下內容新增到您的 .bazelrc 檔案中
common --per_file_copt=external/.*protobuf.*@--PROTOBUF_WAS_NOT_SUPPOSED_TO_BE_BUILT
common --host_per_file_copt=external/.*protobuf.*@--PROTOBUF_WAS_NOT_SUPPOSED_TO_BE_BUILT
common --per_file_copt=external/.*grpc.*@--GRPC_WAS_NOT_SUPPOSED_TO_BE_BUILT
common --host_per_file_copt=external/.*grpc.*@--GRPC_WAS_NOT_SUPPOSED_TO_BE_BUILT
當依賴圖中存在對 @com_google_protobuf//:protoc 的硬編碼引用時,protoc 將強制為這些情況進行構建,從而抵消這一好處。要解決此問題,您需要找到依賴項的位置,並請求更新這些規則集。
要查詢您依賴 protoc 的位置,請使用以下命令
bazel cquery 'somepath("//...", "@com_google_protobuf//:all")'
注意:預構建版本僅適用於我們的標準平臺集。任何非標準平臺的使用者都必須從原始碼構建 protoc。