Last active
December 7, 2023 06:19
-
-
Save doccaico/34bf8f15ef8425d89bbd13df3657e472 to your computer and use it in GitHub Desktop.
Triangle (SDL2) on Windows (MSVC + CMake + Ninja)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cmake_minimum_required(VERSION 3.25) | |
### Debug mode | |
# $ cmake -S . -B build-debug -GNinja -DCMAKE_BUILD_TYPE=Debug | |
# $ cmake --build build-debug | |
# $ cmake --install build-debug # SDL2.dllをコピー | |
# $ cmake --build build-debug && build-debug\game.exe | |
### Release mode | |
# $ cmake -S . -B build-release -GNinja -DCMAKE_BUILD_TYPE=Release | |
# $ cmake --build build-release | |
# $ cmake --install build-debug | |
# $ cmake --build build-release && build-release\game.exe | |
project(game LANGUAGES CXX) | |
# if(${CMAKE_BUILD_TYPE} MATCHES "Release") | |
# set(WINMAIN WIN32) | |
# else() | |
# set(WINMAIN "") | |
# endif() | |
# | |
# add_executable(${PROJECT_NAME} ${WINMAIN} | |
# src/main.cpp | |
# ) | |
# set (SDL2_DIR "${PROJECT_SOURCE_DIR}/deps/SDL2-2.28.5/lib/cmake/SDL2") | |
set (SDL2_DIR "${PROJECT_SOURCE_DIR}/deps/SDL2-2.28.5/cmake") | |
find_package(SDL2 CONFIG REQUIRED) | |
add_executable(${PROJECT_NAME} | |
# WIN32 | |
src/main.cc | |
) | |
set_property (TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17) | |
target_compile_options(${PROJECT_NAME} | |
PRIVATE $<$<CXX_COMPILER_ID:MSVC>:/utf-8> | |
/permissive- | |
/W4 | |
) | |
# if(${CMAKE_BUILD_TYPE} MATCHES "Release") | |
# set_target_properties(${PROJECT_NAME} PROPERTIES | |
# LINK_FLAGS "/ENTRY:mainCRTStartup") | |
# endif() | |
set(INCS | |
PRIVATE ${SDL2_INCLUDE_DIRS} | |
# PUBLIC ${CMAKE_SOURCE_DIR}/deps/SDL2-2.28.5/include | |
) | |
target_include_directories(${PROJECT_NAME} ${INCS}) | |
set(LIBS | |
${SDL2_LIBRARIES} | |
# ${CMAKE_SOURCE_DIR}/deps/SDL2-2.28.5/lib/x64/SDL2.lib | |
# ${CMAKE_SOURCE_DIR}/deps/SDL2-2.28.5/lib/x64/SDL2main.lib | |
# SDL2main | |
# user32.lib | |
# gdi32.lib | |
# winmm.lib | |
# opengl32.lib | |
) | |
target_link_libraries(${PROJECT_NAME} ${LIBS}) | |
install(FILES ${PROJECT_SOURCE_DIR}/deps/SDL2-2.28.5/lib/x64/SDL2.dll DESTINATION ${CMAKE_BINARY_DIR}) | |
# include(CMakePrintHelpers) | |
# cmake_print_variables(CMAKE_BINARY_DIR) | |
# cmake_print_variables(PROJECT_SOURCE_DIR) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// #include <iostream> | |
#include "SDL.h" | |
int main(int argc, char** argv) | |
{ | |
(void) argc; | |
(void) argv; | |
SDL_Init(SDL_INIT_EVERYTHING); | |
SDL_Window* window = SDL_CreateWindow( | |
"SDL / テスト", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN); | |
SDL_Renderer* renderer = SDL_CreateRenderer( | |
window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); | |
SDL_Vertex vertex_1 = {{400, 150}, {255, 0, 0, 255}, {0, 0}}; | |
SDL_Vertex vertex_2 = {{200, 450}, {0, 0, 255, 255}, {0, 0}}; | |
SDL_Vertex vertex_3 = {{600, 450}, {0, 255, 0, 255}, {0, 0}}; | |
SDL_Vertex vertices[] = { | |
vertex_1, | |
vertex_2, | |
vertex_3 | |
}; | |
bool running = true; | |
while(running) | |
{ | |
SDL_Event ev; | |
while(SDL_PollEvent(&ev)) | |
{ | |
if((SDL_QUIT == ev.type) || | |
(SDL_KEYDOWN == ev.type && SDL_SCANCODE_ESCAPE == ev.key.keysym.scancode)) | |
{ | |
running = false; | |
break; | |
} | |
} | |
SDL_SetRenderDrawColor(renderer, 0, 0, 0, SDL_ALPHA_OPAQUE); | |
SDL_RenderClear(renderer); | |
SDL_RenderGeometry(renderer, NULL, vertices, 3, NULL, 0); | |
SDL_RenderPresent(renderer); | |
} | |
SDL_DestroyRenderer(renderer); | |
SDL_DestroyWindow(window); | |
SDL_Quit(); | |
return 0; | |
} |
Author
doccaico
commented
Dec 7, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment