一開始學習用VSCode開發c++專案時,在VSCode官網中提供的範例都是只有一個main.cpp檔案的方式,且在簡單範例中都只有用一個main.cpp的方式來說明如何進行編譯。但通常c++專案中都會包含一個以上的.cpp檔案組成,要將這些.cpp檔案編譯並組成可執行檔才算是真正編譯完成。
由於VSCode並沒有專案的概念,通常你都是在一個目錄中進行工作。當你在進行一個c++專案時,在專案的目錄中你可能已完成了多個.cpp檔案,要開始編譯前,你需要準備一份編譯用的工作定義檔,這個檔案通常是在你的專案目錄中的.vscode子目錄中,名稱叫作task.json,沒錯看副檔名也能猜到它是一個json格式的文檔。
由於task.json是一份json格式的文字檔,只要你知道它的格式及關鍵字語法,你可以用手動的方式來自行產生這份task.json檔案。但初學者一開始應該也不知道這些,不過這也沒關係,可以透過extension的方式來協助。這裏我們使用c++ extension方式來產生task.json。
安裝c++ extension
在VSCode的extension中查詢c++可以找到以下的extension並進行安裝。如果你是使用container的開發環境,記得安裝extension後要將你的container image檔保存(commit)起來,不然下次還是要再重新安裝一次。

產生編譯工作範本
在VSCode中的terminal -> configure default build task產生以下的範本檔:
{
"type": "cppbuild",
"label": "C/C++: g++ 建置使用中檔案",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "編譯器: /usr/bin/g++"
}
手動調整支援編譯多份.cpp檔
基本的編譯工作檔中的設定只會編譯目前的檔案,也就是你正在開啟及編輯中的檔案。如果你的專案中是有多份.cpp檔案組成的話,需要手動調整一下task.json中的”args”這個參數:
"args": [
"-fdiagnostics-color=always",
"-g",
"${workspaceFolder}/*.cpp",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],