cmake_minimum_required(VERSION 3.10) project(PuzGameProj) if (MSVC) add_definitions(-D_CRT_SECURE_NO_WARNINGS) else() add_compile_options(-g -gcodeview) add_link_options(-fuse-ld=lld -g -Wl,--pdb=) endif() add_compile_definitions("$<$:DEBUG>") # set the output directory for built objects. # This makes sure that the dynamic library goes into the build directory automatically. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$") # Imgui file(GLOB imgui_sources dependency/imgui/*.h dependency/imgui/*.cpp) file(GLOB imgui_backend_sdl dependency/imgui/backends/imgui_impl_sdl3.h dependency/imgui/backends/imgui_impl_sdl3.cpp) add_subdirectory("${CMAKE_SOURCE_DIR}/dependency/minidef") # Engine file(GLOB_RECURSE sources_engine engine/*.cpp engine/*.h) add_executable(PuzGameEngine ${sources_engine}) target_compile_definitions(PuzGameEngine PUBLIC "_AMD64_") set_property(TARGET PuzGameEngine PROPERTY CXX_STANDARD 17) # Game add_custom_command( COMMAND "${CMAKE_SOURCE_DIR}/../tools/minidef.exe" "${CMAKE_SOURCE_DIR}/game/mini.def" "${CMAKE_SOURCE_DIR}/gen/" DEPENDS "${CMAKE_SOURCE_DIR}/game/mini.def" OUTPUT "${CMAKE_SOURCE_DIR}/gen/Generated.h" "${CMAKE_SOURCE_DIR}/gen/Generated.cpp" COMMENT "Genrating from minidef" ) file(GLOB_RECURSE sources_game game/*.cpp game/*.h gen/Generated.cpp gen/Generated.h gen/Def.h gen/Def.cpp) file(GLOB source_singleheader dependency/tinygltf/stb_image.h dependency/tinygltf/stb_image_write.h dependency/tinygltf/json.hpp dependency/tinygltf/tiny_gltf.h) add_library(PuzGame SHARED ${sources_game} ${source_singleheader} ${imgui_sources} ${imgui_backend_sdl}) set_property(TARGET PuzGame PROPERTY CXX_STANDARD 17) target_include_directories(PuzGame PUBLIC dependency/imgui) target_include_directories(PuzGame PUBLIC dependency/tracy/public/) # Profiling option(TRACY_ENABLE "" OFF) if (TRACY_ENABLE) option(TRACY_ON_DEMAND "" ON) set(TRACY_DELAYED_INIT ON) set(TRACY_MANUAL_LIFETIME ON) add_subdirectory("${CMAKE_SOURCE_DIR}/dependency/tracy") endif() # SDL add_subdirectory("${CMAKE_SOURCE_DIR}/dependency/SDL" EXCLUDE_FROM_ALL) # BGFX SET(BGFX_BUILD_TOOLS ON) SET(BGFX_BUILD_EXAMPLES OFF) add_subdirectory("${CMAKE_SOURCE_DIR}/dependency/bgfx.cmake") # Link if (TRACY_ENABLE) target_link_libraries(PuzGame bx bimg bgfx SDL3::SDL3 Tracy::TracyClient) target_link_libraries(PuzGameEngine bx SDL3::SDL3 Tracy::TracyClient) else() target_link_libraries(PuzGame bx bimg bgfx SDL3::SDL3) target_link_libraries(PuzGameEngine bx SDL3::SDL3) endif() set_target_properties(PuzGame PROPERTIES OUTPUT_NAME "PuzGame2")