使用 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 中愉快的阅读源码了。