add_subdirectory(third_party) set(SRC_FILES "src/App.cpp" "src/Event.cpp" "src/Components/MeshRendererComponent.cpp" "src/Components/Rotator.cpp" "src/Graphics/BindlessSetManager.cpp" "src/Graphics/Camera.cpp" "src/Graphics/GfxDevice.cpp" "src/Graphics/ImageCache.cpp" "src/Graphics/ImageLoader.cpp" "src/Graphics/ImmediateExecuter.cpp" "src/Graphics/Init.cpp" "src/Graphics/MaterialCache.cpp" "src/Graphics/MeshCache.cpp" "src/Graphics/Pipeline.cpp" "src/Graphics/Renderer.cpp" "src/Graphics/Swapchain.cpp" "src/Graphics/Util.cpp" "src/Graphics/Resources/GPUImage.cpp" "src/Graphics/Resources/NBuffer.cpp" "src/Graphics/Pipelines/MeshPipeline.cpp" "src/Input/InputManager.cpp" "src/ObjectModel/Component.cpp" "src/ObjectModel/GameObject.cpp" "src/ObjectModel/Object.cpp" "src/ObjectModel/Transform.cpp" "src/Scene/Scene.cpp" "src/Scene/SceneManager.cpp" "src/FS/AssetFS.cpp" ) add_library(destrum ${SRC_FILES}) add_library(destrum::destrum ALIAS destrum) set_target_properties(destrum PROPERTIES CXX_STANDARD 20 CXX_EXTENSIONS OFF ) #target_add_extra_warnings(destrum) target_include_directories(destrum PUBLIC "${CMAKE_CURRENT_LIST_DIR}/include") target_link_libraries(destrum PUBLIC volk::volk_headers vk-bootstrap::vk-bootstrap GPUOpen::VulkanMemoryAllocator glm::glm nlohmann_json::nlohmann_json spdlog::spdlog stb::image PRIVATE freetype::freetype ) target_compile_definitions(destrum PUBLIC VK_NO_PROTOTYPES VMA_VULKAN_VERSION=1003000 # VOLK_DEFAULT_VISIBILITY # FIXME: doesn't work for some reason ) if (WIN32) if (BUILD_SHARED_LIBS) target_link_libraries(destrum PUBLIC SDL2::SDL2main SDL2::SDL2 ) else () target_link_libraries(destrum PUBLIC SDL2::SDL2main SDL2::SDL2-static ) endif () endif () target_compile_definitions(destrum PUBLIC GLM_FORCE_CTOR_INIT GLM_FORCE_XYZW_ONLY GLM_FORCE_EXPLICIT_CTOR GLM_FORCE_DEPTH_ZERO_TO_ONE GLM_ENABLE_EXPERIMENTAL ) set(ASSETS_SRC_DIR "${CMAKE_CURRENT_LIST_DIR}/assets_src") set(ASSETS_RUNTIME_DIR "${CMAKE_CURRENT_LIST_DIR}/assets_runtime") add_custom_target(cook_assets_clean COMMAND TheChef --input "${ASSETS_SRC_DIR}" --output "${ASSETS_RUNTIME_DIR}" --clean ) add_custom_target(cook_assets ALL COMMAND TheChef --input "${ASSETS_SRC_DIR}" --output "${ASSETS_RUNTIME_DIR}" DEPENDS TheChef )