使用 cLion 阅读 envoy 源码

虽然不写 C++,但是看点代码还是能看懂。Envoy 的功能配置复杂,有时候处理问题还是需要看下源码的。

Vim 或者 Code 就算了,我只是阅读源码需要关联跳转就行。在 Clion 中,代码的关联跳转需要一个CMakeLists.txt 文件。

我将生成的内容挂在了 gist 上了,不想花费时间生成的可以直接复制。

准备环境

1. 安装依赖的工具

brew install coreutils wget cmake libtool go automake ninja clang-format

2. bazel

使用 homebrew 进行安装: brew install bazel 即可

安装问运行编译测试下:bazel build //source/exe:envoy-static,提示版本太高。

现在 homebrew 安装的版本是3.7.1,而 envoy 需要3.4.1

按照提示下载3.4.1的版本:cd "/usr/local/Cellar/bazel/3.7.1/libexec/bin" && curl -fLO https://releases.bazel.build/3.4.1/release/bazel-3.4.1-darwin-x86_64 && chmod +x bazel-3.4.1-darwin-x86_64,然后 进到目录里进行下替换

注意:编译耗时很长,吃 cpu。

INFO: Elapsed time: 1844.351s, Critical Path: 336.48s
INFO: 4918 processes: 4918 darwin-sandbox.
INFO: Build completed successfully, 6088 total actions

3. 生成CMakeLists.txt文件

这就是为什么上面需要安装编译工具了,clone git@github.com:lizan/bazel-cmakelists.git 这个仓库。

只要bazel编译能通过,就可以使用这个工具生成文件了。

在 envoy 源码根目录执行命令:/path_to_bazel-cmakelists/bazel-cmakelists //source/exe:envoy-static

执行结果:

CMakeLists.txt generated in following directory:
/Users/addo/Workspaces/github_w/envoyproxy/envoy

4. Clion 刷新

Clion 检测到 CMakeLists.txt 之后就会自动刷新 workspace,自此就可以在 Clion 中愉快的阅读源码了。

comments powered by Disqus