feat: cmake windows support

This commit is contained in:
2025-10-01 10:01:21 +02:00
parent 67ba331ba5
commit 0d147adfe5

View File

@ -1,29 +1,67 @@
cmake_minimum_required(VERSION 3.11) cmake_minimum_required(VERSION 3.16)
project(CodingGame LANGUAGES C CXX) project(CodingGame LANGUAGES C CXX)
if (UNIX)
include(FetchContent) include(FetchContent)
FetchContent_Declare( FetchContent_Declare(
glm glm
GIT_REPOSITORY https://github.com/g-truc/glm.git GIT_REPOSITORY https://github.com/g-truc/glm.git
GIT_TAG bf71a834948186f4097caa076cd2663c69a10e1e #refs/tags/1.0.1 GIT_TAG bf71a834948186f4097caa076cd2663c69a10e1e #refs/tags/1.0.1
) )
FetchContent_MakeAvailable(glm) FetchContent_MakeAvailable(glm)
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared) find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared)
find_package(OpenGL REQUIRED) find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED) find_package(GLEW REQUIRED)
elseif (MSVC) # vcpkg
find_package(SDL3 CONFIG REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLEW CONFIG REQUIRED)
find_package(glm CONFIG REQUIRED)
endif()
# Add -ggdb to debug builds # Add -ggdb to debug builds
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb") # set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb") # set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb")
add_executable(CodingGame src/prelude.cpp src/file_manager.cpp src/shader.cpp src/block.cpp src/vertex.cpp src/texture.cpp src/model.cpp src/main.cpp) add_executable(CodingGame
src/prelude.cpp
src/file_manager.cpp
src/shader.cpp
src/block.cpp
src/vertex.cpp
src/texture.cpp
src/model.cpp
src/main.cpp
)
set_property(TARGET CodingGame PROPERTY CXX_STANDARD_REQUIRED 17) set_property(TARGET CodingGame PROPERTY CXX_STANDARD 17)
set_property(TARGET CodingGame PROPERTY CXX_STANDARD_REQUIRED ON)
file(COPY src/shaders DESTINATION ${CMAKE_BINARY_DIR}/) file(COPY src/shaders DESTINATION ${CMAKE_BINARY_DIR}/)
target_include_directories(CodingGame PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/contrib) target_include_directories(CodingGame PRIVATE
target_link_libraries(CodingGame PRIVATE SDL3::SDL3 OpenGL::GL GLEW::GLEW glm::glm) ${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/contrib
)
target_link_libraries(CodingGame PRIVATE
SDL3::SDL3
OpenGL::GL
GLEW::GLEW
glm::glm
)
# Debug flags
if (MSVC)
target_compile_options(CodingGame PRIVATE $<$<CONFIG:Debug>:/Zi>)
target_link_options(CodingGame PRIVATE $<$<CONFIG:Debug>:/DEBUG:FULL>)
else()
target_compile_options(CodingGame PRIVATE $<$<CONFIG:Debug>:-ggdb>)
endif()
if (WIN32)
add_custom_command(TARGET CodingGame POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
$<TARGET_RUNTIME_DLLS:CodingGame> $<TARGET_FILE_DIR:CodingGame>
COMMAND_EXPAND_LISTS)
endif()