上回说到VS Code与Latex的眉来眼去,作为一名Code吹,发现他与CMake关系也非比寻常。
注:本文目前仅适用于Ubuntu等Linux系统
简介
Linux下编译c/c++一直没有一个好的IDE,vim配置复杂,容易入魔,CLion重还收费,QtCreator丑,Sublime Text更新太慢,Atom已死。
- VS Code 作为微软家VS系列的二公子,凭借帅气的外表(Fashion的界面),众多的小弟(庞大的扩展数量),一经推出便圈粉无数(我先吹了)
-
CMake 快成了C/C++开源项目的标配了,
mkdir build && cd build && cmake .. && make && sudo make install
带来了十分的快感
![](https://img.haomeiwen.com/i6219057/85175c350647e191.png)
安装
- VS Code,去官网下载安装即可
- CMake,执行
sudo apt install cmake
安装VS Code扩展
在VS Code扩展标签中搜索CMake并安装以下两个扩展,安装之后扩展会进行相关初始化
- CMake
- CMake Tools
![](https://img.haomeiwen.com/i6219057/c4fe0cdde732e314.png)
扩展配置
点击下方的工具栏能够执行不同命令
- 编译工具选择(select kits)
![](https://img.haomeiwen.com/i6219057/bc4bda3b20188771.png)
-
配置(configure)
等同于执行
cmake ..
,可选择Debug、Release等等,也可以自己自定义配置
![](https://img.haomeiwen.com/i6219057/517fef29f61864f7.png)
-
编译(build)
等同于执行
make
,选择编译目标
![](https://img.haomeiwen.com/i6219057/c02ad16db7401d66.png)
-
调试(debug)
调用gdb进行调试,调试目标选择
![](https://img.haomeiwen.com/i6219057/9694997e841d7e42.png)
其他常用命令
按F1调出VS Code的控制台,输入cmake即可看到cmake的其他命令,常用有以下几个
![](https://img.haomeiwen.com/i6219057/f6b43d3cfd281fce.png)
-
Clean
执行
make clean
-
Delete cached build settings and reconfigure
删除缓存并重新编译,省去了删除build文件夹在重新配置的步骤
-
Install
执行
make install
-
Scan for Kits
当需要使用不同版本的gcc等工具进行编译时需要重新扫描编译工具
-
活动栏
可以从右侧的活动栏选择相应的项目进行编译、构建了
快捷键配置
默认F7编译,F5调试,可以在文件->首选项->键盘快捷方式中进行修改
![](https://img.haomeiwen.com/i6219057/fb2c604220c5577c.png)
其他配置
- 代码提示
C/C++的代码提示需要先安装C++对应扩展
![](https://img.haomeiwen.com/i6219057/4ffd1a44045bbd74.png)
如果需要添加自定义包含目录,按F1输入cpp,选择C/Cpp:Edit Configuration
,添加includePath
![](https://img.haomeiwen.com/i6219057/8c76515d94c5266f.png)
- 环境变量
编译qt等程序可能需要指定不同的环境变量,在settings.json
中添加cmake.environment
即可
![](https://img.haomeiwen.com/i6219057/8e6fbba616abd462.png)
- 配置、编译参数
在使用CMake进行编译时可能需要使用类似cmake -DCMAKE_BUILD_TYPE=Debug ..
等命令编译不同项目,实现此功能,在VS Code的settings.json
中添加以下配置即可,配置阶段使用的参数使用cmake.configuresArgs
,编译阶段使用的参数使用cmake.buildArgs
项进行配置即可
单元测试
扩展支持自动执行单元测试,点击下方的tests
即可
![](https://img.haomeiwen.com/i6219057/19841d881e1a483c.png)
网友评论