Visual Studio Code でビルドとデバッグにコンテナーを使用する

アプリケーション開発に Visual Studio Code を使用する場合は、コンテナー内にビルドされるようにプロジェクトを設定できます。 その後、コンテナー内で直接ビルドおよびデバッグできます。 このトピックでは、.vscode ディレクトリが存在し、launch.json と settings.json の 2 つのファイルが含まれるように、Visual Studio Code を使用してプロジェクトを作成していることを前提としています。

このトピックでは、コンテナーをローカルで使用する方法について説明します。 ビルドとデバッグに GitHub Codespaces を使用 する : GitHub Codespaces を使用して、Azure Sphere アプリを編集、ビルド、デプロイ、デバッグする方法について説明します。

.devcontainer フォルダーを設定する

プロジェクトの最上位ディレクトリで、.devcontainer という名前のフォルダーを作成します。 このフォルダーで、devcontainer.json という名前のファイルを次の内容で作成します。

{
    "name": "Azure Sphere Blink",
    "runArgs": [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined"],
    "build": {
    "dockerfile": "Dockerfile",
    "target": "dev"
    },

    // Use 'settings' to set *default* container specific settings.json values on container create.
    // You can edit these settings after create using File > Preferences > Settings > Remote.
    "settings": {
            "terminal.integrated.shell.linux": "/bin/bash"
    },

    // Use 'appPort' to create a container with published ports. If the port isn't working, be sure
    // your server accepts connections from all interfaces (0.0.0.0 or '*'), not just localhost.
    // "appPort": [],

    // Uncomment the next line to run commands after the container is created.
    // "postCreateCommand": "gcc -v",

    // Comment out the next line if you want to run as root instead
    "remoteUser": "vscode",

    // Add the IDs of extensions you want installed when the container is created in the array below.
    "extensions": [
    "ms-vscode.cpptools",
    "ms-vscode.azure-sphere-tools",
    "ms-vscode.azure-sphere-tools-ui"
    ]
}

次に、次の内容を含む Dockerfile という名前のファイルを .devcontainer フォルダーに作成します。

FROM mcr.microsoft.com/azurespheresdk:latest AS dev

FROM dev AS build
COPY ./ /src/
WORKDIR /out
RUN cmake -G "Ninja" -DCMAKE_TOOLCHAIN_FILE="/opt/azurespheresdk/CMakeFiles/AzureSphereToolchain.cmake" \
    -DAZURE_SPHERE_TARGET_API_SET="latest-lts" -DCMAKE_BUILD_TYPE="Release" "/src"
ENTRYPOINT [ "ninja" ]

最初 FROM の行では、基本開発コンテナーとして標準の Azure Sphere Docker イメージを指定し、2 番目の行では、その基本コンテナーをビルド環境として使用することを示します。 行は COPY 、リポジトリの内容をコンテナーの /src/ ディレクトリにコピーします。 は WORKDIR 、ビルド ディレクトリを指定します。 このコマンドは RUN 、ビルド ファイルを生成する CMake コマンドを提供します。 最後に、 は ENTRYPOINT 、実際にアプリケーションをビルドするために ninja を呼び出す必要があることを指定します。

プロジェクトをビルドしてデバッグする

Visual Studio Code でプロジェクト フォルダーを開きます。 Visual Studio Code によって新しいファイルが検出され、"フォルダーには Dev Container 構成ファイルが含まれています" というメッセージ ボックスが開きます。 フォルダーに再度開き、コンテナー内で開発します。[コンテナーで再度開く] ボタンを選択して、.devcontainer/Dockerfile ファイルによって作成されたコンテナー内のフォルダーを再度開きます。 Visual Studio Code のタイトル バーが変更され、コンテナー内で編集中であることを示します。 左側のナビゲーション バーで [拡張機能] タブを開くと、ローカルにインストールされている拡張機能とコンテナーにインストールされている拡張機能の両方が表示されます。

F5 キーを押してプロジェクトをビルドし、デバッグを開始します。 アプリケーションがビルドされ、通常どおりデバイスにサイドロードされます。 コードにブレークポイントを設定した場合、ブレークポイントに到達するまでアプリが実行されます。 通常のデバッグ コマンドを使用して、コードを確認できます。 詳細については、Visual Studio Code ドキュメントの 「デバッグ 」トピックを参照してください。

デバッグが完了したら、Shift キーを押しながら F5 キーを押すか、停止アイコンを押します。 コンテナーを閉じるには、Visual Studio Code ツール バーの [リモート] メニューから [リモート接続を閉じる] コマンドを使用します。