WindowsにC++開発環境を構築する(VSCode + MSVC)の環境でSDL2を使ってみたメモ

先に上の記事を見ることをお勧めします。

# 準備

SDL公式サイトからSDL2をダウンロードします。

workspaceFolderに「SDL2-○.○.○○」フォルダを置きます。また、workspaceFolderにSDL2.dllを配置しておきます。

Ctrl + Shift + P からc_cpp_properties.jsonを生成します。

初期状態で以下のようになっていると思います。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.17134.0",
            "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "msvc-x64"
        }
    ],
    "version": 4
}

以下のようにしてincludePathにSDL2を追加します。

"includePath": [
    "${workspaceFolder}\\SDL2-2.0.12\\include",
    "${workspaceFolder}/**"
],

また、tasks.jsonのargsを以下のように編集します。

"args": [
    "/Zi",
    "/EHsc",
    "/Fe:",
    "${fileDirname}\\${fileBasenameNoExtension}.exe",
    "${file}",
    "/I",
    "${workspaceFolder}\\SDL2-2.0.12\\include",
    "/link",
    "/LIBPATH:${workspaceFolder}\\SDL2-2.0.12\\lib\\x86",
    "SDL2.lib","SDL2main.lib","SDL2test.lib",
    "/SUBSYSTEM:CONSOLE"
]

# コーディング(ウィンドウ表示)

以下のコードをコピペしてcppファイルを作成します。

#include <cstdio>
#include <cstdlib>
#include <SDL.h>
#pragma comment(lib, "Shell32.lib")
int main(int argc, char* argv[])
{
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        fprintf(stderr, "SDL_Init error: %s\n", SDL_GetError());
        return EXIT_FAILURE;
    }
    atexit(SDL_Quit);
    auto window = SDL_CreateWindow("Hello World!", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
    if (!window) {
        fprintf(stderr, "SDL_CreateWindow error: %s\n", SDL_GetError());
        return EXIT_FAILURE;
    }
    auto renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if (!renderer) {
        fprintf(stderr, "SDL_CreateRenderer error: %s\n", SDL_GetError());
        SDL_DestroyWindow(window);
        return EXIT_FAILURE;
    }
    auto quit = false;
    while (!quit) {
        SDL_Event e;
        while (SDL_PollEvent(&e)) {
            if (e.type == SDL_QUIT) {
                quit = true;
                break;
            }
        }
        SDL_RenderClear(renderer);
        SDL_RenderPresent(renderer);
    }
    SDL_DestroyRenderer(renderer);
    SDL_DestroyWindow(window);
    return EXIT_SUCCESS;
}

# 実行

Ctrl + Shit + B でビルドします。

./ファイル名.exeで実行します。

以下のようにウィンドウが表示されれば成功です。