VS Code + MinGW 搭建 Windows C++开发环境以及如何简单根据CMake维护的项目生成.sln文件 |
您所在的位置:网站首页 › json文件是用什么语言编译的 › VS Code + MinGW 搭建 Windows C++开发环境以及如何简单根据CMake维护的项目生成.sln文件 |
官方文档是最香香的:https://code.visualstudio.com/docs/cpp/config-mingw 文章目录 1、一些非常不友好的名词1.1 什么TMD是 GNU、MinGW、GCC、gcc、g++?1.2 MSVC 2、获取g++编译器3、VS Code单文件编译和调试流程3.1 安装插件3.2 单个源文件编译运行3.3 tasks.json 指导编译3.4 launch.json 调试3.5 setting.json 设置 4、CMake 使用4.1 创建一个CMake Hello World 项目4.2 CMake:Select a Kit 选择工具包4.3 CMake:Select Variant 选择变量4.4 CMake:Configure 生成配置文件4.5 CMake:Build 生成可执行文件4.6 CMake::Debug 调试 5、用MSVC编译器生成VS解决方案.sln 1、一些非常不友好的名词 1.1 什么TMD是 GNU、MinGW、GCC、gcc、g++?好奇的可以看看,捋清楚他们之间的关系 知乎高赞回答:捋一捋gcc/g++/MinGW/MSVC与make/CMake的关系另一篇CSDN博客:MinGW到底是个什么ghost小总结: GNU 对于目标是Windows开发的人来说不需要懂MinGW(Minimalist GNU for Windows):MinGW 是一个允许在Windows上使用GNU工具链的开发工具集,使开发者能够在Windows平台上进行类Unix环境的开发。我们只需要知道,它有我们需要的编译器和调试器即可GCC, GNU Compiler Collection,一堆编译器gcc,用于编译C语言源代码的编译器g++,用于编译C++语言源代码的编译器简而言之,MinGW 是一个工具集,它允许在Windows上使用 GNU 工具链进行开发。GCC 是 GNU 工具链中的主要组件,而 gcc 和 g++ 是 GCC 的其中两个编译器,分别用于编译C和C++代码。 我们需要从中获取编译器g++,调试器gdb 1.2 MSVC这是Visual Stuidio(IDE)用的编译器,在VSCode中,如果选择MSVC作为编译器,结果就是生成一个对应VS版本的.sln解决方案,后面就不说了吧 用Visual Studio 2022 打开就行。 如果是纯VS Code环境开发C++的话,毫无疑问还是要用 g++ 2、获取g++编译器下载MinGW:https://sourceforge.net/projects/mingw-w64/files/ Files里面选择64位用于windows平台的这个sjlj的版本(稳定版压缩包版本),解压后找到bin/g++.exe。 把g++.exe的路径添加到系统环境变量中 3、VS Code单文件编译和调试流程篇幅考虑,下载VS Code就略过了 3.1 安装插件 C/C++C/C++ ThemesChinese(Simplified)用途可以自己看插件说明 C/C++插件需要指定编译器路径,否则智能提示可能不管用 ctrl+shift+p -> 输入C/C++ -> 选择编辑配置(UI) 指定编译器路径,下拉菜单中一般都可以直接选择,VSCode中的这个插件会自动检查一遍环境变量,找到所有可用的编译器 (还可以看看这里的其他设置,可以发现这里就是设置C++相关配置的) 如果选择用编辑配置(json),则会自动在.vscode文件夹下生成一个c_cpp_properties.json,这跟UI编辑界面的内容是一样的,并且在这两个地方任意一个地方进行改动后,另一个也会相应的发生变化。 3.2 单个源文件编译运行 新建一个空白文件夹,写个hello world测试代码 直接点击运行(菜单栏运行或者三角图标) 选择g++.exe 运行成功,终端里面有Hello World!输出 3.3 tasks.json 指导编译此时可能注意到根目录下新增了一个文件.vscode/tasks.json,这是C/C++插件默认帮我们生成的,必须有这个文件才能编译 { "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe 生成活动文件", "command": "E:\\MingGW\\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": "调试器生成的任务。" } ], "version": "2.0.0" }它帮你简化了很多操作,这里的行为就相当于你在命令行里输入: g++.exe fdiagnostics-color=always -g main.cpp -o main.exe .\main.exetasks.json 是 Visual Studio Code(VSCode)中用于配置任务(tasks)的文件。任务是指一系列在 VSCode 中可以执行的操作,通常是编译、构建、运行程序。tasks.json 文件允许你定义这些任务的配置信息。 字段解释: version: 指定 tasks.json 文件的版本。通常是 “2.0.0”。tasks: 一个数组,包含了任务的配置信息。label: 任务的标签,用于在 VSCode 中标识任务。type: 任务的类型,通常是 “shell”(使用命令行)或 “process”(使用可执行程序)。 - command: 执行任务的命令或可执行文件。这里就是调用g++.exe - args: 传递给命令或可执行文件的参数。这里是传给g++的编译命令options: 任务的配置选项,例如设置工作目录cwd等。 3.4 launch.json 调试调试,需要创建launch.json,并指定调试相关配置属性,比如调试的目标可执行文件,调试采用的调试器路径等 首先进入调试界面,创建launch.json,弹出的下拉菜单中选择C++(GDB) 默认创建好的文件中,右下角选择添加配置->(gdb)启动,这会为你生成默认的配置信息 默认生成的launch.json内容如下 { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "输入程序名称,例如 ${workspaceFolder}/a.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/path/to/gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] }字段解释: version: launch.json 文件的版本。通常是 “0.2.0”,表示使用的 JSON 配置文件格式版本。configurations: 包含一个数组,每个元素是一个调试配置。 name: 调试配置的名称,用于在 VSCode 中标识不同的调试配置。type: 调试器的类型。在这个配置中,是 “cppdbg”,表示使用 C++ 调试器。request: 调试请求的类型。在这里是 “launch”,表示启动调试会话。program: 待调试的程序的路径。须手动设置为"${workspaceFolder}/main.exe",表示工作区中main.exe。args: 启动程序时传递的命令行参数。这里为空数组,表示没有附加的命令行参数。stopAtEntry: 是否在程序入口处停止。在这里是 false,表示不停在程序入口处。cwd: 启动程序时的工作目录。这里使用 ${fileDirname},表示使用当前文件所在的目录作为工作目录。environment: 启动程序时使用的环境变量。这里是空数组,表示没有特定的环境变量设置。externalConsole: 是否使用外部控制台。在这里是 false,表示使用 VSCode 的内部控制台。MIMode: 调试器的模式。在这里是 “gdb”,表示使用 GDB(GNU Debugger)。miDebuggerPath: GDB 可执行文件的路径。改为 "E:\\MingGW\\mingw64\\bin\\gdb.exe",你需要将其替换为你系统中 GDB 的实际路径。setupCommands: 一组 GDB 初始化命令,用于在调试会话开始时执行。这里包含了两个命令,分别用于启用漂亮打印和设置反汇编风格为 Intel。设置好之后,就可以开始断点调试了 在源代码文件中打断点(F9),然后运行->启动调试(F5),也可以在三角按钮那里选择调试 3.5 setting.json 设置settings.json 是 VSCode中用于配置编辑器的各种行为和选项。这个文件存储了用户自定义的设置,以便在不同的项目和工作区中重用。VS Code会实时的把你修改过的设置写入到setting.json中 打开VSCode的设置 设置有两个作用域,一个是本机用户,另一个是当前项目的,用户作用域的setting.json文件是存放在C盘Users/username/AppData/Roaming/Code/user/中的,而作用域为当前项目的则是存放在项目根目录的.vscode/里面。 你用UI修改任何设置,都会马上生成一个setting.json文件,记录你刚修改的东西。你在设置里面进行的设置更改,会实时的写入到对应作用域的setting.json文件中,两者互相反射 4、CMake 使用必须掌握的技能,目前github上开源项目几乎都采用CMake来维护,不会使用则寸步难行,学会CMake之后,其他的构建工具都简简单单,比如Premake。 学习CMake语法可以看看github上一个高赞教程:https://github.com/ttroy50/cmake-examples/tree/master需要: 手动下载CMake:https://cmake.org/download/,并配置环境变量。检查是否安装成功,可以在命令行中输入命令cmake --version 在VSCode中,设置CMake路径需要安装插件:CMake、CMake Tools掌握CMake Tools: 强烈建议看看CMake Tools插件所指定的官方文档,进行学习。 简单来说,有了这个插件,你就不用编写task.json,launch.json了。下面是一个简单的使用案例 4.1 创建一个CMake Hello World 项目创建一个文件夹,用VS Code打开,Ctrl+Shift+P输入CMake,选择Quick Start 输入项目名称,比如HelloProject,然后选择C++项目,可执行文件 这会创建一个基本的CMake示例项目,包含一个源文件main.cpp、CMakeLists.txt(它会告诉CMake Tools插件如何构建你的项目) 生成可执行文件之前,还需要做2步准备工作 4.2 CMake:Select a Kit 选择工具包在使用CMake Tools扩展构建项目之前,您需要配置它以了解系统上的编译器。通过扫描“工具包”来完成这个配置。一个工具包代表一个工具链,这是用于构建项目的编译器、链接器和其他工具 打开命令面板(Ctrl+Shift+P),运行“CMake: Select a Kit”。该扩展将自动扫描您计算机上的工具包,并创建找到的系统上的编译器列表。这里我们选择GCC 8.1.0这个,路径太长,实际上这个就是g++.exe 你可以在侧边栏看到你选择的kits 注意,CMake默认是选择MSVC编译器(如果你有)。所以第一次,一定要手动选kit,如果你选择自动配置CMake项目,当CMake Tools看到CMakeLists.txt,就一顿操作给你build文件夹搞出来了,里面躺着一个.sln- - 。在你这一套配置走下来后,之后的自动配置就用的gcc了 4.3 CMake:Select Variant 选择变量这里的Variant也可以叫做变体,其实就是构建类型。一个Variant包含了构建项目的指令。默认情况下,CMake Tools扩展提供了四个Variant,分别对应于四种默认的构建类型: Debug: 禁用优化并包含调试信息。Release: 包含优化但没有调试信息。MinRelSize: 优化以减小大小,没有调试信息。RelWithDebInfo: 优化以提高速度,并包含调试信息。要选择一个Variant,打开命令面板(Ctrl+Shift+P),运行“CMake: Select Variant”命令。 这里我选择Debug 4.4 CMake:Configure 生成配置文件配置项目是指生成适用于选定kit和variant的构建系统所需的文件。这些文件包含构建项目所需的编译器、链接器、库等设置。一旦配置完成,您就可以继续使用其他 CMake 命令进行构建、编译、链接和调试该项目。 运行 CMake: Configure 命令来配置项目。这会产生一个build文件夹,里面放的是构建该项目所需要的所有配置信息。 4.5 CMake:Build 生成可执行文件终于可以build了,运行CMake:Build 或者在下边栏点击这个生成(build),中文版翻译为生成,作用就是生成可执行文件,默认是build all,因为大型项目可能有多个生成目标,可能有些是静态库、动态库、.exe,你可以选择只生成某一个,也可以生成所有。 在build里面可以找到.exe文件,运行它即可 4.6 CMake::Debug 调试要运行和调试项目,请打开 main.cpp 并在 std::cout 行设置断点(F9),然后打开命令面板运行 CMake: Debug 即可 5、用MSVC编译器生成VS解决方案.sln顺带一提,看完上面的内容,这里就 非常简单了 你只需要打开任何一个带CMakeLists.txt的源代码文件,把Kit改成VS 然后ctrl + shift + p -> CMake:configure 生成配置文件,然后build文件夹下.sln就愉快的出现了,用Visual Studio打开就行了 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |