파일 분리, 셰이더 로드까지 수강.
This commit is contained in:
31
cmake/Shaders.cmake
Normal file
31
cmake/Shaders.cmake
Normal file
@@ -0,0 +1,31 @@
|
||||
function(add_shaders TARGET_NAME)
|
||||
set(SHADER_SOURCE_FILES ${ARGN})
|
||||
list(LENGTH SHADER_SOURCE_FILES FILE_COUNT)
|
||||
if(FILE_COUNT EQUAL 0)
|
||||
message(FATAL_ERROR "Cannot add shaders target without shader files!")
|
||||
endif()
|
||||
|
||||
set(SHADER_COMMANDS)
|
||||
set(SHADER_PRODUCTS)
|
||||
|
||||
foreach(SHADER_SOURCE IN LISTS SHADER_SOURCE_FILES)
|
||||
cmake_path(ABSOLUTE_PATH SHADER_SOURCE NORMALIZE)
|
||||
cmake_path(GET SHADER_SOURCE FILENAME SHADER_NAME)
|
||||
|
||||
# COMMANDS
|
||||
list(APPEND SHADER_COMMANDS COMMAND)
|
||||
list(APPEND SHADER_COMMANDS Vulkan::glslc)
|
||||
list(APPEND SHADER_COMMANDS "${SHADER_SOURCE}")
|
||||
list(APPEND SHADER_COMMANDS "-o")
|
||||
list(APPEND SHADER_COMMANDS "${CMAKE_CURRENT_BINARY_DIR}/${SHADER_NAME}.spv")
|
||||
# PRODUCTS
|
||||
list(APPEND SHADER_PRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${SHADER_NAME}.spv")
|
||||
endforeach()
|
||||
|
||||
add_custom_target(${TARGET_NAME} ALL
|
||||
${SHADER_COMMANDS}
|
||||
COMMENT "Compiling shaders..."
|
||||
SOURCES ${SHADER_SOURCE_FILES}
|
||||
BYPRODUCTS ${SHADER_PRODUCTS}
|
||||
)
|
||||
endfunction()
|
||||
Reference in New Issue
Block a user