iT邦幫忙

6

[VSCode] Visual Studio Code 執行 C++ (2) - IntelliSense + Building + Debugging

繼上一篇安裝完後,VSCode 還不能執行C++,還需要做一些設定讓 VSCode 知道要使用哪一個編譯器,要去哪裡找標頭檔,和要怎麼偵錯。

需先在專案目錄下加入.vscode資料夾,之後的設定檔都會放在此資料夾內。

1. 程式碼自動完成 (IntelliSense)
.vscode資料夾下,加入c_cpp_properties.json檔案。我只做了Windows作業系統下的設定。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceRoot}",
                "C:\\MinGW\\include",
                "C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include",
                "C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include\\c++"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "__GNUC__=5",
                "__cdecl=__attribute__((__cdecl__))"
            ],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "${workspaceRoot}",
                    "C:\\MinGW\\include",
                    "C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include",
                    "C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include\\c++"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 3
}

這裡需要注意 path 內的 C:\\MinGW\\lib\\gcc\\mingw32\\6.3.0\\include\\c++,要與安裝 MinGW 的路徑相符。

2. 建置 (Building)
.vscode資料夾下,加入tasks.json檔案。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g", "${file}", "-o", "${fileBasenameNoExtension}.exe"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

這裡我想要讓編譯出來的exe檔名和原始檔一樣,所以我在args設定:
"-g", "${file}", "-o", "${fileBasenameNoExtension}.exe"
http://ithelp.ithome.com.tw/upload/images/20171002/20106865paNCtuMoAV.jpg

3. 偵錯 (Debugging)
.vscode資料夾下,加入launch.json檔案。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build"
        }
    ]
}

program 對應執行檔名稱。
miDebuggerPath 需與安裝 MinGW 的路徑相符。
preLaunchTask 在偵錯前要執行的task,對應 tasks.json 內的 taskName。
如果不設定 preLaunchTask 在偵錯前必須先手動執行編譯,等編譯完後再執行偵錯,使用起來不方便,設定後只需要按F5就能自動完成編譯和偵錯就像在使用 Visual Studio 一樣 XD。

結語:
到這裡已經能用 VSCode編譯、執行、偵錯 C++程式,不過真正使用後會發現 IntelliSense怎麼好像和 Visual Studio有一段落差,而且沒有語法檢查功能,感覺只是進階版的記事本 XD,所以在下一篇會繼續介紹有那些套件可以讓 VSCode 更好用,更像在使用 Visual Studio。

參考文章: C/C++ for VS Code (Preview)

相關文章:
[VSCode] Visual Studio Code 執行 C++ (1) - 安裝 VSCode + MinGW
[VSCode] Visual Studio Code 執行 C++ (2) - IntelliSense + Building + Debugging
[VSCode] Visual Studio Code 執行 C++ (3) - 語法檢查
[VSCode] Visual Studio Code 執行 C++ (4) - 範本 (Template)
[VSCode] Visual Studio Code 執行 C++ (5) - 中文亂碼
[VSCode] Visual Studio Code 執行 C++ (6) - Code Runner


1 則留言

1
ardt4113c
iT邦新手 5 級 ‧ 2017-11-03 00:50:33

您好
非常感謝您分享這篇詳細的設定教學
之前研究了很久都還是不會弄QQ
現在終於裝好了

只是我有個小問題
照您的設定能順利編譯並執行
不過所使用的是外部的cmd視窗
請問有辦法設定成使用VS CODE的內建終端機,
或是外部的powershell視窗呢?

請大大替小弟解惑QQ

fysh711426 iT邦研究生 3 級‧ 2017-11-03 15:43:45 檢舉

感謝您的回覆,不過我沒有用過 powershell,
稍微 google 一下相關文章也沒有找到,
可能要問其他大大了XD

fysh711426 iT邦研究生 3 級‧ 2017-11-03 21:40:45 檢舉

找到不跳出cmd視窗的方法,但是沒辦法指定終端機
launch.json 裡面的 externalConsole: true 改成 false

我要留言

立即登入留言