Squash project setup refactor
This commit is contained in:
committed by
Georg Hagen
parent
6a1a76f4d1
commit
071ced8cb0
25
cmake/functions/SetShaderDependency.cmake
Normal file
25
cmake/functions/SetShaderDependency.cmake
Normal file
@@ -0,0 +1,25 @@
|
||||
function(SetShaderDependency TARGET SHADER_SRC_FOLDER SHADER_OUTPUT_FOLDER)
|
||||
if (NOT EXISTS ${SHADER_OUTPUT_FOLDER})
|
||||
file(MAKE_DIRECTORY ${SHADER_OUTPUT_FOLDER})
|
||||
endif ()
|
||||
|
||||
file(GLOB SHADER_SRC_FILES ${SHADER_SRC_FOLDER}/*)
|
||||
list(FILTER SHADER_SRC_FILES EXCLUDE REGEX ".*\\.(hpp|cpp)$")
|
||||
foreach(SHADER_FILE ${SHADER_SRC_FILES})
|
||||
get_filename_component(FILENAME ${SHADER_FILE} NAME_WLE)
|
||||
if (NOT ${FILENAME} IN_LIST PROCESSED_FILES)
|
||||
list(APPEND PROCESSED_FILES ${FILENAME})
|
||||
list(APPEND OUTPUT_HEADERS ${SHADER_OUTPUT_FOLDER}/${FILENAME}.h)
|
||||
list(APPEND OUTPUT_SOURCES ${SHADER_OUTPUT_FOLDER}/${FILENAME}.c)
|
||||
endif()
|
||||
endforeach()
|
||||
set(SHADER_EXPECTED_OUTPUT ${OUTPUT_HEADERS} ${OUTPUT_SOURCES})
|
||||
|
||||
add_custom_command(OUTPUT ${SHADER_EXPECTED_OUTPUT}
|
||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/TryCompileShaders.cmake
|
||||
DEPENDS ${SHADER_SRC_FILES}
|
||||
COMMENT "Recompiling shaders")
|
||||
add_custom_target(RecompileShaders ALL
|
||||
DEPENDS ${SHADER_EXPECTED_OUTPUT})
|
||||
add_dependencies(${TARGET} RecompileShaders)
|
||||
endfunction(SetShaderDependency)
|
||||
Reference in New Issue
Block a user