cmake_minimum_required(VERSION 4.3)
project(VulkanTutorial)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

file(GLOB_RECURSE SOURCE_CODE ./src/**.cpp)
add_executable(${PROJECT_NAME}
        ${SOURCE_CODE}
)

file(GLOB SHADER_CODE ./shaders/*.spv)
file(COPY ${SHADER_CODE} DESTINATION ${CMAKE_BINARY_DIR})


target_include_directories(${PROJECT_NAME}
    PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/src
)

# 1. 查找 Vulkan
find_package(Vulkan REQUIRED)
if(NOT Vulkan_FOUND)
    message(FATAL_ERROR "Vulkan not found!")
endif()

# 设置 GLFW 不构建示例和文档，加快编译
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
add_subdirectory(Libraries/glfw)            # GLFW

add_subdirectory(Libraries/glm)             # GLM
add_subdirectory(Libraries/spdlog)

# 链接依赖
target_link_libraries(${PROJECT_NAME}
        PRIVATE
        glfw
        Vulkan::Vulkan
        spdlog
)
