Skip to content

Commit 7e49123

Browse files
Update shader and asset synchronization for Visual Studio and Ninja Multi-Config generators
1 parent c7ea7d2 commit 7e49123

1 file changed

Lines changed: 25 additions & 27 deletions

File tree

attachments/CMakeLists.txt

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,12 @@ find_program(SLANGC_EXECUTABLE slangc HINTS $ENV{VULKAN_SDK}/bin REQUIRED)
8585

8686
function (add_shaders_target TARGET)
8787
cmake_parse_arguments ("SHADER" "" "CHAPTER_NAME" "SOURCES" ${ARGN})
88-
set (SHADERS_DIR ${CMAKE_BINARY_DIR}/${SHADER_CHAPTER_NAME}/shaders)
88+
if(${CMAKE_GENERATOR} MATCHES "Visual Studio.*" OR
89+
${CMAKE_GENERATOR} MATCHES "Ninja Multi-Config")
90+
set (SHADERS_DIR ${CMAKE_BINARY_DIR}/${SHADER_CHAPTER_NAME}/$<CONFIG>/shaders)
91+
else()
92+
set (SHADERS_DIR ${CMAKE_BINARY_DIR}/${SHADER_CHAPTER_NAME}/shaders)
93+
endif()
8994
add_custom_command (
9095
OUTPUT ${SHADERS_DIR}
9196
COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADERS_DIR}
@@ -104,7 +109,12 @@ endfunction ()
104109

105110
function (add_slang_shader_target TARGET)
106111
cmake_parse_arguments ("SHADER" "" "CHAPTER_NAME" "SOURCES" ${ARGN})
107-
set (SHADERS_DIR ${CMAKE_BINARY_DIR}/${SHADER_CHAPTER_NAME}/shaders)
112+
if(${CMAKE_GENERATOR} MATCHES "Visual Studio.*" OR
113+
${CMAKE_GENERATOR} MATCHES "Ninja Multi-Config")
114+
set (SHADERS_DIR ${CMAKE_BINARY_DIR}/${SHADER_CHAPTER_NAME}/$<CONFIG>/shaders)
115+
else()
116+
set (SHADERS_DIR ${CMAKE_BINARY_DIR}/${SHADER_CHAPTER_NAME}/shaders)
117+
endif()
108118
file(GLOB HAS_COMPUTE ${CHAPTER_SHADER}.comp)
109119
set (ENTRY_POINTS -entry vertMain -entry fragMain)
110120
if(HAS_COMPUTE)
@@ -167,43 +177,31 @@ function (add_chapter CHAPTER_NAME)
167177
if (DEFINED CHAPTER_MODELS)
168178
list(TRANSFORM CHAPTER_MODELS PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/assets/")
169179
file (COPY ${CHAPTER_MODELS} DESTINATION ${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/models)
170-
endif ()
171-
if (DEFINED CHAPTER_TEXTURES)
172-
list(TRANSFORM CHAPTER_TEXTURES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/assets/")
173-
file (COPY ${CHAPTER_TEXTURES} DESTINATION ${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/textures)
174-
endif ()
175-
176-
# Post-build step to copy assets to executable directory
177-
if(${CMAKE_GENERATOR} MATCHES "Visual Studio.*" OR
180+
181+
if(${CMAKE_GENERATOR} MATCHES "Visual Studio.*" OR
178182
${CMAKE_GENERATOR} MATCHES "Ninja Multi-Config")
179-
180-
set(EXECUTABLE_DIR $<TARGET_FILE_DIR:${CHAPTER_NAME}>)
181-
182-
if(DEFINED CHAPTER_SHADER)
183-
sync_directory(
184-
"${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/shaders"
185-
"${EXECUTABLE_DIR}/shaders"
186-
${CHAPTER_NAME}
187-
"${CHAPTER_NAME} - Shaders"
188-
)
189-
endif()
190-
if(DEFINED CHAPTER_MODELS)
191183
sync_directory(
192184
"${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/models"
193-
"${EXECUTABLE_DIR}/models"
185+
"${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/$<CONFIG>/models"
194186
${CHAPTER_NAME}
195187
"${CHAPTER_NAME} - Models"
196188
)
197189
endif()
198-
if(DEFINED CHAPTER_TEXTURES)
190+
endif ()
191+
if (DEFINED CHAPTER_TEXTURES)
192+
list(TRANSFORM CHAPTER_TEXTURES PREPEND "${CMAKE_CURRENT_SOURCE_DIR}/assets/")
193+
file (COPY ${CHAPTER_TEXTURES} DESTINATION ${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/textures)
194+
195+
if(${CMAKE_GENERATOR} MATCHES "Visual Studio.*" OR
196+
${CMAKE_GENERATOR} MATCHES "Ninja Multi-Config")
199197
sync_directory(
200198
"${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/textures"
201-
"${EXECUTABLE_DIR}/textures"
199+
"${CMAKE_BINARY_DIR}/${CHAPTER_NAME}/$<CONFIG>/textures"
202200
${CHAPTER_NAME}
203201
"${CHAPTER_NAME} - Textures"
204-
)
202+
)
205203
endif()
206-
endif()
204+
endif ()
207205
endfunction ()
208206

209207
function(sync_directory SRC_DIR DST_DIR TARGET_NAME LABEL)

0 commit comments

Comments
 (0)