From 0d147adfe5d0cce1e0a5e0f5aa54ab2a93986e75 Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 1 Oct 2025 10:01:21 +0200 Subject: [PATCH] feat: cmake windows support --- CMakeLists.txt | 76 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 57 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 488a5aa..c8e77db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,29 +1,67 @@ -cmake_minimum_required(VERSION 3.11) +cmake_minimum_required(VERSION 3.16) project(CodingGame LANGUAGES C CXX) -include(FetchContent) +if (UNIX) + include(FetchContent) + FetchContent_Declare( + glm + GIT_REPOSITORY https://github.com/g-truc/glm.git + GIT_TAG bf71a834948186f4097caa076cd2663c69a10e1e #refs/tags/1.0.1 + ) + FetchContent_MakeAvailable(glm) -FetchContent_Declare( - glm - GIT_REPOSITORY https://github.com/g-truc/glm.git - GIT_TAG bf71a834948186f4097caa076cd2663c69a10e1e #refs/tags/1.0.1 -) - -FetchContent_MakeAvailable(glm) - -find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared) -find_package(OpenGL REQUIRED) -find_package(GLEW REQUIRED) + find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared) + find_package(OpenGL 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 -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -ggdb") +# set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_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}/) -target_include_directories(CodingGame PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/contrib) -target_link_libraries(CodingGame PRIVATE SDL3::SDL3 OpenGL::GL GLEW::GLEW glm::glm) \ No newline at end of file +target_include_directories(CodingGame PRIVATE + ${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 $<$:/Zi>) + target_link_options(CodingGame PRIVATE $<$:/DEBUG:FULL>) +else() + target_compile_options(CodingGame PRIVATE $<$:-ggdb>) +endif() + +if (WIN32) + add_custom_command(TARGET CodingGame POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + $ $ + COMMAND_EXPAND_LISTS) +endif() \ No newline at end of file