cmake_minimum_required(VERSION 3.10)
project(MyGLFWProject)

# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找Vulkan SDK (Windows平台)
if(WIN32)
    # 尝试自动查找Vulkan SDK
    find_package(Vulkan REQUIRED)
    
    # 如果自动查找失败，可以手动指定路径
    if(NOT Vulkan_FOUND)
        message(WARNING "自动查找Vulkan失败，尝试手动指定")
        set(VULKAN_SDK_PATH "$ENV{VULKAN_SDK}")
        if(VULKAN_SDK_PATH)
            set(Vulkan_INCLUDE_DIRS "${VULKAN_SDK_PATH}/Include")
            set(Vulkan_LIBRARIES "${VULKAN_SDK_PATH}/Lib/vulkan-1.lib")
        else()
            message(FATAL_ERROR "未找到Vulkan SDK，请安装或设置VULKAN_SDK环境变量")
        endif()
    endif()
endif()

# 设置GLFW的路径
set(GLFW_INCLUDE_DIR "D:/code/vulkan_demo/glfw/include")
set(GLFW_LIBRARY "D:/code/vulkan_demo/glfw/lib/glfw3.lib")
set(GLM_INCLUDE_DIR "D:/code/vulkan_demo/glm")

# 添加可执行文件
add_executable(${PROJECT_NAME} 
    main.cpp
    HelloTriangleApplication.cpp
    Cleanup.cpp
    SwapChain.cpp
    PhysicalDevice.cpp
    LogicDevice.cpp
    Framebuffers.cpp
    RenderPass.cpp
    Pipeline.cpp
    Image.cpp
    Render.cpp
    Command.cpp
    )

# 包含目录
target_include_directories(${PROJECT_NAME} PRIVATE
    ${GLFW_INCLUDE_DIR}
    ${Vulkan_INCLUDE_DIRS}
    ${GLM_INCLUDE_DIR}
)

# 链接库
target_link_libraries(${PROJECT_NAME} PRIVATE
    ${GLFW_LIBRARY}
    ${Vulkan_LIBRARIES}
)
