Shaders are compiled by CMake

This commit is contained in:
Chewico 2026-03-24 12:48:37 +01:00
parent 09d92231e2
commit 73fcd0be6b

View File

@ -4,6 +4,34 @@ file(GLOB_RECURSE GRAPHICS_SOURCES CONFIGURE_DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp ${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}) add_library(deerith_graphics ${GRAPHICS_SOURCES})
target_include_directories(deerith_graphics target_include_directories(deerith_graphics
@ -18,6 +46,8 @@ find_package(glfw3 REQUIRED)
find_package(glm REQUIRED) find_package(glm REQUIRED)
find_package(fmt REQUIRED) find_package(fmt REQUIRED)
add_dependencies(deerith_graphics Shaders)
target_link_libraries(deerith_graphics target_link_libraries(deerith_graphics
PUBLIC PUBLIC
deerith::core deerith::core