C++Vscode 使用CMakeLists推荐构建C++项目项目结构、各个文件夹的作用、从编码到debug
目录
一、vscode配置
插件:
- CMake
- CMake tools
- CMake Tools Helper
插件的功能是CMake语法高亮、自动补全,结合VSCode IDE生成CMake项目、构建CMake项目等。CMake工具本身还是要下载到本地,并且配置环境变量。
二、项目结构
完整的项目结构一般是这样:
- build
- include
- src
- bin
- lib
CMakeLists.txt
给出两个真实项目的项目结构:
包括6部分:build文件夹、include文件夹、src文件夹、lib文件夹、bin文件夹和CMakeLists.txt。
其中,各个文件夹的作用已经介绍过了。下面重点介绍在vscode中使用CMakeLists.txt。
三、编译
3.1 工作原理
首先,我们需要知道make工具,它是一个自动化编译工具,用来批处理编译源文件,使用make工具进行编译需要编写一个规则文件Makefile,但是对于一个大工程,编写Makefile也是一件很复杂的事情。所以我们又向上抽象了一层,设计出了更为简单的CMakeLists.txt,开发人员只需要去编写简单的CMakeLists.txt,然后用cmake工具,它能够自动生成Makefile文件。然后再用make。。。。。
3.2 在vscode中如何使用cmake进行编译
有两种方式,一种是直接在vscode的内嵌命令行里输命令,见下面这篇博客。
然后选择适合你的编译器(VSCode会将你安装的编译器都罗列出来供你选择。如果你是交叉编译,那么就可以在这里配置你的交叉编译器),为方便演示这里我们选择GCC7.4.0
:
然后根据提示输入项目名称:
然后选择该项目是创建库还是可执行文件(选择不同,自动生成的CMakeLists.txt的内容也就不同),这里我们选择可执行文件Executable
:
然后VSCode就会为你生成一个CMake项目,如下所示:
默认只给出了main.cpp。其他的文件夹比如include文件夹、src文件夹、bin文件夹等自己建立就行。
接下来是如何结合插件编译。点击底部的Build就行了,是不是比命令行简单一些?而且还有高亮显示。
PS: 不过还是推荐我们每次编写程序的时候编写一下c_cpp_properties.json,因为该文件中includePath参数可以很好指定头文件目录,这样就算没有CMakeLists.txt文件,我们在vscode编写程序的时候它也自动包含了头文件,这样就可以具有代码提示功能 。而且,有了CMakeLists.txt以后,即使写了c_cpp_properties.json文件,也并不影响项目脱离vscode单独在shell/cmd里编译运行。
三、调试
为什么把debug单独拿出来说呢?因为有的时候我的编码习惯是这样的:只是把vscode当作具有代码提示功能的编辑器,然后编译和运行直接用本地的cmake在shell进行,得到可执行程序以后用gdb进行代码的调试。
按照我之前的这种习惯,除了简单地下载C/C 插件以外不需要对vscode进行任何配置,因为除了打代码外,后续的过程直接不在vscode里。这是一种思路。
步骤:
假设我们有如下的CMakeLists.txt
-
cmake_minimum_required(VERSION 2.6)
-
-
。。。
-
-
add_executable(result ${SRC_LIST}) # 可执行文件命名为result
点击图中最左侧第四个小蜘蛛形状的图标(调试),点击左上方的小齿轮,添加配置(C GDB/LLDB)
这个时候资源管理器下就会生成.vscode文件夹,下面有个launch.json文件,内容如下
-
{
-
"version": "0.2.0",
-
"configurations": [
-
{
-
"name": "(gdb) Launch",
-
"type": "cppdbg",
-
"request": "launch",
-
"program": "enter program name, for example ${workspaceFolder}/a.out",
-
"args": [],
-
"stopAtEntry": false,
-
"cwd": "${workspaceFolder}",
-
"environment": [],
-
"externalConsole": true,
-
"MIMode": "gdb",
-
"setupCommands": [
-
{
-
"description": "Enable pretty-printing for gdb",
-
"text": "-enable-pretty-printing",
-
"ignoreFailures": true
-
}
-
]
-
}
-
]
-
}
把下面一句:
"program": "enter program name, for example ${workspaceFolder}/a.out",
改成:(根据CMakeLists.txt文件内容,将会在build文件夹下生成result可执行文件)
"program": "${workspaceFolder}/build/result"
然后就可以加断点调试了。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgbfjjh
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01