相關名詞就不解釋了,這里主要講講在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