新手编bazel构建的项目时踩的深坑
仅分享故障及解决之道,无更多干货
编译故障:absolute_path… 确保 /usr/x86_64-linux-gnu/include/…h都在…balah
原理:看对应的包模块,外部的llvm工具链默认包含的头文件路径分2类,一类llvm自身的,一类unix通用的(/usr/include、/usr/local/include),但我此时需要把 /usr/x86_64-linux-gnu/include 也添进去
耗时:半天,找可用的方法非常耗时、也不能简单的-I/usr/…或-hcopt=…,边试边看有限的报错信息、边查官方文档边查包源码
解决patch如下:
---------------------------- base/cvd/MODULE.bazel ----------------------------
index e79563ea..13699785 100644
@@ -35,6 +35,9 @@ git_override(
llvm = use_extension("@toolchains_llvm//toolchain/extensions:llvm.bzl", "llvm")
llvm.toolchain(
llvm_version = "18.1.8",
+ cxx_builtin_include_directories = {
+ "linux-x86_64": [ "/usr/x86_64-linux-gnu/include" ]
+ }
)
use_repo(llvm, "llvm_toolchain")
总结
以上问题应该比较通用,可给大家苦恼时一些有用参考,解决无必要的消耗。
期间测试了使用bazel编译c/c++工具链教程,整体感受尚可,初阶的上手成本在这,更面向对象、更复杂、更灵活的编译系统,适合大项目使用。