61 lines
1.5 KiB
CMake
61 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
|
|
file(GLOB_RECURSE GRAPHICS_SOURCES CONFIGURE_DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
|
|
)
|
|
|
|
set(SHADER_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/shaders)
|
|
set(SHADER_OUT_DIR ${CMAKE_BINARY_DIR}/shaders)
|
|
|
|
file(GLOB_RECURSE SHADERS
|
|
${SHADER_SRC_DIR}/*.vert
|
|
${SHADER_SRC_DIR}/*.frag
|
|
)
|
|
|
|
find_program(GLSLC glslc REQUIRED)
|
|
set(SPIRV_SHADERS)
|
|
|
|
foreach(SHADER ${SHADERS})
|
|
get_filename_component(FILE_NAME ${SHADER} NAME)
|
|
set(SPIRV_FILE ${SHADER_OUT_DIR}/${FILE_NAME}.spv)
|
|
|
|
add_custom_command(
|
|
OUTPUT ${SPIRV_FILE}
|
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADER_OUT_DIR}
|
|
COMMAND ${GLSLC} ${SHADER} -o ${SPIRV_FILE}
|
|
DEPENDS ${SHADER}
|
|
COMMENT "Compiling ${FILE_NAME} with glslc"
|
|
VERBATIM
|
|
)
|
|
|
|
list(APPEND SPIRV_SHADERS ${SPIRV_FILE})
|
|
endforeach()
|
|
|
|
add_custom_target(Shaders ALL DEPENDS ${SPIRV_SHADERS})
|
|
add_library(deerith_graphics ${GRAPHICS_SOURCES})
|
|
|
|
target_include_directories(deerith_graphics
|
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
)
|
|
|
|
target_compile_features(deerith_graphics PUBLIC cxx_std_20)
|
|
|
|
find_package(Vulkan REQUIRED)
|
|
find_package(glfw3 REQUIRED)
|
|
find_package(glm REQUIRED)
|
|
find_package(fmt REQUIRED)
|
|
|
|
add_dependencies(deerith_graphics Shaders)
|
|
|
|
target_link_libraries(deerith_graphics
|
|
PUBLIC
|
|
deerith::core
|
|
PRIVATE
|
|
Vulkan::Vulkan
|
|
glfw
|
|
glm::glm
|
|
fmt::fmt
|
|
)
|
|
|
|
add_library(deerith::graphics ALIAS deerith_graphics) |