@@ -85,7 +85,12 @@ find_program(SLANGC_EXECUTABLE slangc HINTS $ENV{VULKAN_SDK}/bin REQUIRED)
8585
8686function (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
105110function (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 ()
207205endfunction ()
208206
209207function (sync_directory SRC_DIR DST_DIR TARGET_NAME LABEL )
0 commit comments