SDL3 C++開発環境構築(CMake使用) 

# SDL3を複数環境で開発する際の備忘録
## 使用ライブラリ
 SDL:SDL3-3.2.8.zip (https://github.com/libsdl-org/SDL/releases/tag/release-3.2.8)
 CMake

ベースは2025_3_20
## 手順
### 1 SDLダウンロード
 SDL3のReleaseからzipをダウンロードする。
 解凍場所はどこでもよい。
### 2 開発環境作成
 C++の開発環境を構築する。
 当方では下記のようなディレクトリ構造にする。
 ```
 /Project_Name
 ---/includ #インクルードファイル置き場
 ---/src #ソースファイル置き場
 ---/lib #ライブラリ置き場
 ---/build #CMakeビルド場所
 ---CMakeLists.txt
```

### 3-1:Mac環境 SDLのインストール
```shell
cd # 回答したSDLディレクトリに移動

makdir build
cd build

#DCMAKE_INSTALL_PREFIXに2で作成した/Project_Name/libの絶対パスを入力
#入力パスにSDL3がインストールされる
cmake .. -DCMAKE_INSTALL_PREFIX=

make
make install
```
### 3-2:Windows環境 SDLのインストール 追記:2025_3_31
``` powershell

cd # 回答したSDLディレクトリに移動

makdir build
cd build

#DCMAKE_INSTALL_PREFIXには/Project_Name/libの絶対パスを指定
cmake -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=Release ..

#cmakeでビルドすることでmsbuildを直接呼び出さなくて済む
cmake --build . --config Release

#ビルドしたものをDCMAKE_INSTALL_PREFIXで指定したディレクトリにコピーする
#この際ライブラリ外の必要なデータもコピーされることがあるのでcmake下のbuildディレクトリを直接コピーするのはやめた方がいい
#(確証があるわけではないが作業ミスをするよりコマンドを打った方が速い)
cmake --install . --config Release
```


### 4 開発環境CMakeの作成
set(SDL3_DIR ....)の個所では${PROJECT_SOURCE_DIR}が./Project_Nameであることを示しています。
libsフォルダ内を確認し"SDL3Config.cmake"の存在を確認してください。
```  ./Project_Name/CMakeLists.txt
cmake_minimum_required(VERSION 3.16)

project(CMakeSDLTest VERSION 1.0)

# C++標準を設定（例：C++17）
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

#3でインストールしたlib内で"SDL3Config.cmake"ファイルがあるディレクトリを指定する
set(SDL3_DIR ${PROJECT_SOURCE_DIR}/libs/SDL3/cmake)

#SDL3_DIRを元にCMakeがライブラリをビルド環境に追加する
find_package(SDL3 REQUIRED)

#自身で作成したヘッダーファイル用ディレクトリをビルド環境に追加
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

# srcディレクトリ内のすべてのソースファイルを取得
file(GLOB SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")

# 実行可能ファイルを作成
add_executable(${PROJECT_NAME} ${SOURCES})

#一緒にビルドするライブラリを指定
target_link_libraries(${PROJECT_NAME} SDL3::SDL3)

# SDL3.dllが実行ファイルディレクトリに必要なのでlibsフォルダ内からコピーする
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy
    ${CMAKE_SOURCE_DIR}/libs/SDL3/bin/SDL3.dll
    ${CMAKE_SOURCE_DIR}/build/SDL3.dll
)

```


### 5 簡素なSDLプログラムの作成

``` ./Project_Name/src/main.cpp
#include "SDL3/SDL.h"
#include "SDL3/SDL_render.h"

int main()
{
    const int window_w = 640;
    const int window_h = 480;

    if(!SDL_Init(SDL_INIT_VIDEO)){
        return 1;
    }

    //  SDLのWindowの作成
    SDL_Window *window = SDL_CreateWindow("Hello SDL", window_w, window_h,0);
    if(!window){
        return 1;
    }

    SDL_Renderer *renderer = SDL_CreateRenderer(window, NULL);
    if(!renderer){
        return 1;
    }

    // ループ開始前に一度画面を描画する
    SDL_RenderClear(renderer_);
    SDL_SetRenderDrawColor(renderer, 100, 100, 100, 255);
    SDL_RenderPresent(renderer);

    SDL_Event ev;
    //  メインループ
    while (true)
    {
        //  システムイベントの処理
        while (SDL_PollEvent(&ev))
        {
            //  ウィンドウを閉じる場合
            if (ev.type == SDL_EVENT_QUIT)
                return 0;
        }
    }

    // ループ終了時:作成したSDL関連のものを破棄する
    SDL_DestroyWindow(window);
    SDL_DestroyRenderer(renderer);
    return 0;
}

```

### 6 実行
vscodeを使用してcmakeのビルドと実行を行うことでウィンドウを表示することがでる。

vscodeでcmakeを利用する方法については別途情報ソースを個別に閲覧してください。



##

不明点や間違っている個所などがありましたらコメントをいただけますとさいわいで