[原創]在Windows平台使用msys2、mingw64和vscode編寫和調試C/C++代碼


相關名詞就不解釋了,這里主要講講在vscode里怎么配,這里假設大家相關工具已經裝好。

題外話:里面的大多數坑都是windows平台和linux平台的差異造成的,如果在linux平台配置,應該會順利很多。

 

1、在.vscode目錄下,新建以下幾個配置文件,當然也可以通過vscode命令自動生成,如果你已有這些文件直接修改即可。

 

c_cpp_properties.json(代碼提示):

{
  "configurations": [
    {
      "name": "Win32",
      "windowsSdkVersion": "10.0.18362.0",
      "compilerPath": "${env:MSYS2}/mingw64/bin/gcc",
      "includePath": ["${env:MSYS2}/mingw64/include"],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "intelliSenseMode": "gcc-x64"
    }
  ],
  "version": 4
}

 

tasks.json(編譯):

{
  "tasks": [
    {
      "type": "shell",
      // 標示名
      "label": "build",
      // 要執行的命令,這里用了一個腳本來構建
      "command": "./build.sh",
      // 命令參數
      "args": ["${fileBasename}", "${fileBasenameNoExtension}.exe"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "problemMatcher": "$gcc"
    }
  ],
  "version": "2.0.0"
}

 

launch.json(調試):

{
  // 使用 IntelliSense 了解相關屬性。
  // 懸停以查看現有屬性的描述。
  // 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "gdb",
      "type": "cppdbg",
      "request": "launch",
      // 要調試的程序
      "program": "${workspaceFolder}/build/${fileBasenameNoExtension}.exe",
      // 程序運行參數
      "args": ["./video/sample.mp4"],
      // 是否在入口自動斷點
      "stopAtEntry": false,
      // 工作目錄
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": true,
      "MIMode": "gdb",
      "miDebuggerPath": "gdb.exe",
      // 先編譯,再調試,對應tasks.json中的標示
      "preLaunchTask": "build",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

這里需要特別關注的一點是externalConsole要設置成true,只能另開一個控制台調試,因為在原來的bash環境下無法執行windows的調試連接器。

 

settings.json(vscode終端配置):

{
  "editor.formatOnSave": true,
  // 要使用cmd終端,其他終端會有兼容問題
  "terminal.integrated.shell.windows": "${env:MSYS2}/usr/bin/bash.exe",
  "terminal.integrated.shellArgs.windows": ["--login"],
  "terminal.integrated.env.windows": {
    "MSYSTEM": "MINGW64",
    "CONTITLE": "MinGW x64",
    "C_INCLUDE_PATH": "/mingw64/include",
    "CPLUS_INCLUDE_PATH": "/mingw64/include"
  }
}

這個配置需要重點說下:

首先終端必須設置為bash.exe,這個被硬編碼到了vscode的代碼中,他會根據這個識別相關的參數配置。

其次,參數中需要加入"--login",這個配置了才能正常使用linux下的命令,比如ls之類的。

然后,環境參數需要手動設置一下,MSYSTEM和CONTITLE是給msys2使用的,讓他識別出要使用的平台是mingw64(后面那個估計只是title,做展示用的而已),這兩個參數是從他的bat腳本里面摳出來的。

C_INCLUDE_PATH和CPLUS_INCLUDE_PATH是設置gcc編譯使用的頭文件尋找路徑,msys2好像沒有自動配置這個,我們這里手動加下,這樣mingw64目錄下的include就可以被gcc識別了。

 

2、在根目錄下創建構建腳本 

 build.sh(構建腳本,可根據需要自行更改):

#!/bin/sh

# 創建build目錄
if [ ! -d "build" ]; then
    mkdir build
fi

gcc $1 -g -o build/$2 -lavformat -lavcodec -lavutil -lSDl2main -lSDL2

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM