Open4
WindowsとUbuntuでSDL2を使う
前提
- VSCode
- CMake
SDLのインストール
Ubuntu
sudo apt install libsdl2-dev
Windows
GitHubのReleasesから SDL2-devel-{version}-VC.zip
をダウンロード。
任意の場所に展開し、パスを通す。
通すパスは ~\lib\x64
main.cppとCMakeLists.txtを用意する。
main.cpp
/*This source code copyrighted by Lazy Foo' Productions 2004-2024
and may not be redistributed without written permission.*/
// Using SDL and standard IO
#ifdef _WIN64
#include <SDL.h>
#else
#include <SDL2/SDL.h>
#endif
#include <stdio.h>
// Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char* args[]) {
// The window we'll be rendering to
SDL_Window* window = NULL;
// The surface contained by the window
SDL_Surface* screenSurface = NULL;
// Initialize SDL
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
} else {
// Create window
window = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH,
SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if (window == NULL) {
printf("Window could not be created! SDL_Error: %s\n",
SDL_GetError());
} else {
// Get window surface
screenSurface = SDL_GetWindowSurface(window);
// Fill the surface white
SDL_FillRect(screenSurface, NULL,
SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));
// Update the surface
SDL_UpdateWindowSurface(window);
// Hack to get window to stay up
SDL_Event e;
bool quit = false;
while (quit == false) {
while (SDL_PollEvent(&e)) {
if (e.type == SDL_QUIT) quit = true;
}
}
}
}
// Destroy window
SDL_DestroyWindow(window);
// Quit SDL subsystems
SDL_Quit();
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.21)
project(sdl2_test)
find_package(SDL2 REQUIRED)
add_executable(main main.cpp)
target_link_libraries(main PRIVATE SDL2::SDL2 SDL2::SDL2main)
ソースコードは https://lazyfoo.net/tutorials/SDL/01_hello_SDL/linux/cli/index.php より、一部改変
cmake -S . -B build
cmake --build build
Ubuntu
./build/main
Windows
.\build\Debug\main.exe