安装GCC

GCC全称是GNU C Compiler ,最早的时候就是一个C编译器。但是后来因为这个项目里边集成了更多其他不同语言的编译器,GCC就代表 the GNU Compiler Collection,所以表示一堆编译器的合集。
MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 C语言 编译器 GCC 移植到了 Windows 平台下,并且包含了 Win32API ,因此可以将源代码编译为可在 Windows 中运行的可执行程序。而且还可以使用一些 Windows 不具备的,Linux平台下的开发工具。一句话来概括:MinGW 就是 GCC 的 Windows 版本 。

MinGW版本命名方式

MinGW 可以适应不同系统开发环境,因此有几大参数需要进行选择: Version、Architecture、Threads、Exception

Version:指的是你选择的 GCC 编译器的版本,一般建议选择最新的版本;

Architecture:指的是你的电脑的系统类型,i686 表示的是 32 位的系统类型,x86_64 表示的是 64 位的系统类型;

Threads:指的是线程模型,posix 或 win32;如果在 Windows 下开发 Linux 应用程序,则选择 posix;
如果开发 Windows 平台下的应用程序,就需要选择 Win32;

Exception:指的是异常处理模型。i686 系统架构有两种选择:dwarf 和 sjlj;x86_64 系统架构也有两种选择:seh 和 sjlj。其中i686开发32位的应用程序推荐使用dwarf速度更快,x86_64开发64位应用程序使用seh。

MSVCRT 或 UCRT 运行时库:minGW-w64 编译器使用 MSVCRT 作为运行时库,它在所有版本的 Windows 上都可用。由于 Windows 10 通用 C 运行时 (UCRT) 可作为 MSVCRT 的替代品。通用 C 运行时也可以安装在早期版本的 Windows 上(请参阅:Windows中通用 C 运行时的更新)。除非您针对的是旧版本的 Windows,否则 UCRT 作为运行时库是更好的选择,因为它是为了更好地支持最新的 Windows 版本以及提供更好的标准一致性而编写的。

最终MinGw的版本推荐x86_64-posix-seh-urct,下载地址:https://github.com/niXman/mingw-builds-binaries/releases?page=1

GCC对CPP版本支持情况

image-puze.png

配置MinGW

在windows系统变量中配置MinGW安装目录/bin/目录,既可以在终端中使用gcc.exe,g++.exe编译工具。在bin目录下复制一份mingw32-make.exe为make.exe,这样make工具同样可以使用了。

安装Cmake

在https://github.com/Kitware/CMake/releases?page=1下载cmake包。解压安装后,同样windows的系统变量PATH,配置CMake bin目录地址。

VSCODE配置

  1. VSCODE的扩展中搜索一下插件进行安装
  • C/C++;
  • C/C++ Extension Pack;

task.json

在.vscode下创建tasks.json文件,它的作用是告诉 VS Code 如何构建(编译)程序,将调用 g++编译器从源代码创建一个可执行文件。

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:\\soft\\mingw64\\bin\\g++.exe",//这里同上面文件,请换成自己存储的g++所在路径    
            "args": [
                "-std=c++11",
                "-O0",
                "-Wl,--stack=268435456",
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\hello.exe",
                "-g",
                "-fexec-charset=GBK"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

launch.json

launch.json是用于运行 ( run ) 和调试 ( debug ) 的配置文件,可以指定语言环境,指定调试类型

// https://code.visualstudio.com/docs/cpp/launch-json-reference
{
    "version": "0.2.0",
    "configurations": [{
        "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
        "type": "cppdbg", // 配置类型,对于C/C++可认为此处只能是cppdbg,由cpptools提供;不同编程语言不同
        "request": "launch", // 可以为launch(启动)或attach(附加)
        "program": "${fileDirname}/hello.exe", // 将要进行调试的程序的路径
        "args": [], // 程序调试时传递给程序的命令行参数,一般设为空
        "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
        "cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
        "environment": [], // 环境变量
        "externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
        "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡
        "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
        "miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
        "setupCommands": [
            { // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": false
            }
        ],
        "preLaunchTask": "C/C++: g++.exe 生成活动文件" // 调试前执行的任务,一般先编译程序。与tasks.json的label相对应
    }]
}

c_cpp_properties.json

这个文件用于源代码的语法高亮等,比如有预处理器预定义宏,像WIN32这样的,可以在里面写一下,从而VSCode编辑器能识别出来并对相关代码进行语法高亮或者灰色显示(比如条件编译下在Linux环境中才会进行编译的代码段)

VSCODE使用Cmake开发CPP工程项目(推荐)

使用task.json配置编译C++一般比较繁琐,这里使用CMake进行编译项目。这里需要自行编写CMakeLists.txt文件进行工程项目编译,然后还是使用Vscode launch.json进行项目调试。修改launsh.json项目程序地址。

// https://code.visualstudio.com/docs/cpp/launch-json-reference
{
    "version": "0.2.0",
    "configurations": [{
        "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
        "type": "cppdbg", // 配置类型,对于C/C++可认为此处只能是cppdbg,由cpptools提供;不同编程语言不同
        "request": "launch", // 可以为launch(启动)或attach(附加)
        "program": "${workspaceFolder}/build/hello.exe", // 将要进行调试的程序的路径
        "args": [], // 程序调试时传递给程序的命令行参数,一般设为空
        "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
        "cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
        "environment": [], // 环境变量
        "externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
        "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡
        "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
        "miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
        "setupCommands": [
            { // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": false
            }
        ]
    }]
}

使用CMake编译项目可以得到可执行文件进行调试。

mkdir build
cd build
cmake -G "MinGW Makefiles" ..
make
文章作者: 热心网民詹Sir
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编程之家
cpp程序开发 cpp
喜欢就支持一下吧