VSCode で g++ を使うための設定

他のページもちらほら見つかるが自分的最小メモを残しておく。

VSCode には予め CMake Tools のエクステンションをインストールしておく。

そして VSCode 上でステップ実行(デバッグ)するために 2 つの設定ファイルを作成 (編集)する必要があります。

tasks.json でビルド方法を定義し、launch.json でデバック起動方法を定義します。

CMake extensionの設定

CMake がインストールされていると VSCode の左下のほうに CMake .. のような表示が出てくるのでそこをクリックして、コンパイラを選択します。

tasks.json の設定

task.json ではビルドコマンドを定義します。なのでここでは、cmake を使ったビルド環境に合わせて調整します。

プロジェクトのフォルダに .vscode フォルダがあるはずなのでその中の tasks.json を編集します。

CTRL + SHIFT + P を押して tasks: Configure task などを選んで設定を追加します。

{
    "tasks": [
        {
            "label": "CMake: build",
            "type": "shell",
            "command": "/usr/bin/cmake",
            "args": [
                "--build",
                "${workspaceFolder}/build",
                "--config",
                "Debug"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": [
                "$gcc"
            ],
            "detail": "Task generated by CMake Tools."
        }
    ],
    "version": "2.0.0"
}

“label” は表示される名前なので好きな感じにして OK です。
“command” と “args” でコマンドラインを組み立てます。ソースと同じディレクトリで実行するなら
`cmake –build ./build –config Debug` というコマンドになります。
ビルドディレクトリを変えたければ “${workspaceFolder}/build” を変更します。

tasks.json を設定しても、VSCode の Run メニューとかでは実行できないようです。どうしたら実行できるのかは後で調べる。

launch.json の設定

launch.json では VSCode の デバッグタブ? (左端の Run & Debug) で上部に表示できるデバッグ時の起動方法を設定する。

デバッグタブのギヤアイコンをクリックすると設定を追加できる。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "CMake Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${command:cmake.launchTargetPath}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [
                {
                    "name": "PATH",
                    "value": "S{env:PATH}",
                    // "name": "LD_LIBRARY_PATH",
                    // "value": "/usr/local/cuda-11.8/lib64:/usr/local/cuda-11.8/lib64/stubs:/usr/local/cuda-11.8/targets/x86_64-linux/lib"
                }
            ],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb.",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "CMake: build"
        }
    ]
}

launch.json はきほんそのままで動くみたいだが、
“environment” に PATH や LD_LIBRARY を追加すると
`PATH=xxx LD_LIBRARY [ビルドしたプログラム]`
のように起動することになるらしい。

これで次回からも設定に戸惑わなくなりそう。