v/CMakeLists.txt

85 lines
2.0 KiB
CMake

cmake_minimum_required(VERSION 4.1)
project(v)
set(CMAKE_CXX_STANDARD 23)
include(FetchContent)
find_package(Vulkan REQUIRED)
FetchContent_Declare(
glfw
GIT_REPOSITORY https://github.com/glfw/glfw.git
GIT_TAG 232164f62b0edbf667cba37c91bab92ffbb020d0
)
FetchContent_MakeAvailable(glfw)
FetchContent_Declare(
glm
GIT_REPOSITORY https://github.com/g-truc/glm.git
GIT_TAG 1.0.3
)
FetchContent_MakeAvailable(glm)
FetchContent_Declare(
stb
GIT_REPOSITORY https://github.com/nothings/stb.git
GIT_TAG master
)
FetchContent_MakeAvailable(stb)
add_library(stb INTERFACE)
target_include_directories(stb INTERFACE ${stb_SOURCE_DIR})
add_executable(v main.cpp
renderer/init.cpp
renderer/init.h
renderer/swapchain.cpp
renderer/swapchain.h
renderer/renderer.cpp
renderer/renderer.h
misc.cpp
misc.h
renderer/sprite.cpp
renderer/sprite.h
renderer/texture.cpp
renderer/texture.h
renderer/texture_sheet.cpp
renderer/texture_sheet.h)
target_include_directories(v
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(v PRIVATE glfw Vulkan::Vulkan glm stb)
set(SHADER_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/shaders")
set(SHADER_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/shaders")
file(GLOB_RECURSE SHADER_SOURCES
"${SHADER_SOURCE_DIR}/*.vert"
"${SHADER_SOURCE_DIR}/*.frag"
"${SHADER_SOURCE_DIR}/*.comp"
)
set(SPIRV_BINARY_FILES "")
foreach(SHADER ${SHADER_SOURCES})
get_filename_component(FILENAME ${SHADER} NAME)
set(OUTPUT_SPV "${SHADER_SOURCE_DIR}/${FILENAME}.spv")
add_custom_command(
OUTPUT ${OUTPUT_SPV}
COMMAND Vulkan::glslc ${SHADER} -o ${OUTPUT_SPV}
DEPENDS ${SHADER}
COMMENT "Compiling shader: ${FILENAME}"
)
list(APPEND SPIRV_BINARY_FILES ${OUTPUT_SPV})
endforeach()
add_custom_target(compile_shaders ALL DEPENDS ${SPIRV_BINARY_FILES})
add_dependencies(v compile_shaders)