最近对c++语言比较感兴趣,想比较体系地进行相关的学习,正好看到github上有一个项目非常的棒:
https://github.com/Light-City/CPlusPlusThings
为了学习该项目,第一步便是搭建环境,仓库中搭建环境主要有两种方式(手动依赖安装、docker),从方便高效上来看,个人觉得docker更快捷,下面记录下docker环境搭建过程。
一. docker环境构建流程
1.1 docker 环境构建
如果是linux环境,docker环境比较容易,详细可以看菜鸟教程:
https://www.runoob.com/docker/ubuntu-docker-install.html
windows下则稍显麻烦,需要先开启虚拟化,并下载安装 docker desktop软件:
https://www.docker.com/products/docker-desktop/
接下来配置一下WSL2 ubuntu环境
完成docker环境配置后,拉取镜像:
docker pull xingfranics/cplusplusthings:latest
接下来,就是要将该镜像运行起来了:
docker run -idt -v /home/li//CPlusPlusThings:/home/admin/CPlusPlusThings --cap-add sys_ptrace --ulimit core=-1 --privileged --name cplusplusthings xingfranics/cplusplusthings:latest
上面的命令中:
"/home/li//CPlusPlusThings" 表示的是本机(ubuntu)的目录,要根据自己的开发目录进行设点,"/home/admin/CPlusPlusThings" 表示的是docker中被映射的目录, 其它的命令参数可参考下文:
https://blog.csdn.net/OfficerGoodbody/article/details/126662612
接下来,可以在本机的"/home/li"目录中, 拉取github中的c++代码:
https://github.com/Light-City/CPlusPlusThings.git
1.2 vscode配置
为了在vscode中连接上docker容器,我们需要下载一个vscode插件:Remote-SSH,然后在左侧会出现一个小电脑图标,点击后找到"xingfranics/cplusplusthings:latest (cplusplusthings", 并点击箭头进入。
任意找到一个目录中的BUILD文件,打开teminal 并执行 注释中的bazel命令进行验证,例如打开 "cpp2.0/cpp11/BUILD" 文件,复制下述命令进行执行:
bazel run //cpp2.0/cpp11:lambda
如果控制台成功输出,则基本环境搭建完成
为了避免后面在vscode编辑界面保存时出现权限问题,我们还要打开 "/home/li" (工作目录,根据自己映射的目录来进行调整),修改所有权:
sudo chown -R admin CPlusPlusThings/
1.3 bazel 提示进一步配置
为了让编程体验更佳,我们需要安装并配置Bazel插件:
vscode中搜索"Bazel" 插件并进行安装,接着还要进行buildifier环境配置
buildifier环境配置过程如下:
下载 Buildtools代码
git clone https://github.com/bazelbuild/buildtools.git
切换分支tag
git checkout v4.2.3
这一步非常重要,如果没有切换tag而直接进行编译步骤,则会提示
Current Bazel version is 4.2.0, expected at least 5.4.0
进行编译
bazel build //buildifier //buildozer //unused_deps
安装Buildtools到指定的位置:
sudo cp bazel-bin/buildifier/buildifier_/buildifier /usr/local/bin/
vscode 设置中进行配置
打开.vscode中的 settings.json 文件,进行如下配置:
{
"bazel.buildifierExecutable": "/usr/local/bin/buildifier",
"bazel.executable": "/usr/local/bin/bazel",
"bazel.buildifierFixOnFormat": true,
"bazel.enableCodeLens": true,
"bazel.queriesShareServer": true
}
按照上述过程配置后,我们打开"BUILD"文件会惊喜地发现,在cc_binary的上面会出现build提示,点击即可快速执行!