[VSCode筆記]編譯多個cpp檔案

一開始學習用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}"
            ],

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *