作为一个程序员,VSCode、CMake并不陌生,然而,在MCU的开发过程中,底层很少选择使用CMake去编译工程,多数还是使用目标芯片对应的工具链编译,常见的编译器:HighTec、Tasking、GreenHills、Keil等等。如果进行SOA(Service Oriented Architecture)架构开发,使用一些软实时操作系统时(eg:Linux),搭配CMake使用,构建进程的编译会方便很多。本文,主要介绍VSCode+CMake环境搭建以及示例。 关于VSCode、CMake的安装教程,网上很多,本文不过多赘述。
(一)VSCode官方下载地址
链接:https:///projects/mingw/1、CMake、CMake Tools插件安装,如下所示:
2、C/C++、C/C++ Extension Pack插件安装,如下所示:
编写源文件之前,先创建一个工作区,操作如下:文件->打开文件夹...(选择一个目标文件夹)。 本文在VSCode_CMake文件夹下创建工作区,如下所示:
(一)CMakeLists.txt文件编写
CMakeLists.txt文件内容如下所示: # 设置项目名称 project(CMakePro)
set(CMAKE_C_COMPILER "gcc") set(CMAKE_CXX_COMPILER "g++")
#指定CMake版本 set(CMAKE_CXX_STANDARD 11)
# 将当前文件中的所有文件放到变量DIR_TOOT_SRCS中 # aux_source_directory 查找某路径下的所有源文件,"."表示当前路径 aux_source_directory(. DIR_TOOT_SRCS) # 将变量DIR_TOOT_SRCS中的源文件编译源码生成目标,目标文件名称CMakePro add_executable(CMakePro ${DIR_TOOT_SRCS})
#include <iostream> #include <vector> #include <string>
using namespace std;
int main() { vector<string> MsgInfo {"HelloWorld","VSCode","CMake"};
for (const string& info : MsgInfo) { cout << info << " " << endl; } getchar(); }
(三)另存工作区
具体操作:文件->将工作区另存为...
自定义工作的名称,本文VSCode_CMake,文件后缀.code-workspace,如下所示: VSCode_CMake.code-workspace内容如下所示,设置CMake的IDE,本文选则"MinGW Makefiles"。"cmake.generator": "MinGW Makefiles"
使用快捷键:Ctrl+Shift+P,选择目标CMake工具包,如下所示:
本文选择"GCC 12.2.0 x86_64-w64-mingw32",如下所示:
(1)创建.vscode文件夹
(2)创建c_cpp_properties.json文件{ "configurations": [ { "name": "GCC", "defines": ["_DEBUG", "UNICODE", "_UNICODE"], //g++路径 "compilerPath": "C:/msys64/mingw64/bin/g++.exe", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "windows-gcc-x64", "configurationProvider": "vector-of-bool.cmake-tools", "includePath": [ "${default}", "${workspaceFolder}/**" ] } ], "version": 4 }
{ "version": "0.2.0", "configurations": [ { "name": "C/C++: g++.exe build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "g++" } ] }
{ "tasks": [ { "type": "cppbuild", "label": "g++", "command": "C:\\msys64\\mingw64\\bin\\g++.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true }, "detail": "Task generated by Debugger." } ], "version": "2.0.0" }
当然,如上的*.json文件也可以通过"调试配置"自动生成,选择调试方式,会自动生成对应的*.json文件,如下所示: 注意:tasks.json文件的label与launch.json文件中的preLaunchTask保持一致,如下所示:参考资料:https://code./docs/cpp/config-mingw
可以在终端使用命令查看CMake和Make的安装情况,如下所示:
如果习惯了bash命令,只要安装了git,可以切换shell,在终端输入:bash,如下所示: CMake编译之前,可以先将本地安装的CMake.exe路径添加到"设置"中,如下所示:
(一)终端中,手动进行源文件编译
1、使用cmake命令,如下所示: cmake -S . -B Build -G "MinGW Makefiles" https:///cmake/help/latest/manual/cmake.1.html提示:-B
构建项目文件所在的目录,-G(Generator ),设置 IDE。 在源文件对应的文件夹下会自动生成一个build文件夹,如下所示:
2、使用make命令,生成可执行文件(CMakePro),如下所示:
2、进行项目配置,如下所示
3、编译文件,通过"输出"窗口查看输出信息,如下所示: 生成文件,均输出到build文件夹,与手动执行命令产生的结果一致,如下所示: 最后,进行目标文件,在终端(eg:PowerShell)运行可执行文件,本文示例如下:(一)在调试C/C++文件中选择"调试C/C++文件",如下所示:
(二)程序调试如下所示:
|