@@ -51,12 +51,12 @@ if(ENABLE_CPP20_MODULE)
5151 endif ()
5252
5353 target_sources (VulkanCppModule
54- PUBLIC
55- FILE_SET cxx_modules TYPE CXX_MODULES
56- BASE_DIRS
57- "${Vulkan_INCLUDE_DIR} "
58- FILES
59- "${Vulkan_INCLUDE_DIR} /vulkan/vulkan.cppm"
54+ PUBLIC
55+ FILE_SET cxx_modules TYPE CXX_MODULES
56+ BASE_DIRS
57+ "${Vulkan_INCLUDE_DIR} "
58+ FILES
59+ "${Vulkan_INCLUDE_DIR} /vulkan/vulkan.cppm"
6060 )
6161
6262
@@ -85,12 +85,7 @@ 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- 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 ()
88+ set (SHADERS_DIR ${SHADER_CHAPTER_NAME} /shaders)
9489 add_custom_command (
9590 OUTPUT ${SHADERS_DIR}
9691 COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADERS_DIR}
@@ -100,37 +95,32 @@ function (add_shaders_target TARGET)
10095 COMMAND glslang::validator
10196 ARGS --target-env vulkan1.0 ${SHADER_SOURCES} --quiet
10297 WORKING_DIRECTORY ${SHADERS_DIR}
103- DEPENDS ${SHADER_SOURCES}
104- COMMENT "Compiling Shaders for ${TARGET} "
98+ DEPENDS ${SHADERS_DIR} ${ SHADER_SOURCES}
99+ COMMENT "Compiling Shaders"
105100 VERBATIM
106101 )
107102 add_custom_target (${TARGET} DEPENDS ${SHADERS_DIR} /frag.spv ${SHADERS_DIR} /vert.spv )
108103endfunction ()
109104
110105function (add_slang_shader_target TARGET )
111106 cmake_parse_arguments ("SHADER" "" "CHAPTER_NAME" "SOURCES" ${ARGN} )
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 ()
107+ set (SHADERS_DIR ${SHADER_CHAPTER_NAME} /shaders)
118108 file (GLOB HAS_COMPUTE ${CHAPTER_SHADER} .comp )
119109 set (ENTRY_POINTS -entry vertMain -entry fragMain)
120110 if (HAS_COMPUTE)
121111 list (APPEND ENTRY_POINTS -entry compMain)
122112 endif ()
123113 add_custom_command (
124- OUTPUT ${SHADERS_DIR}
125- COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADERS_DIR}
114+ OUTPUT ${SHADERS_DIR}
115+ COMMAND ${CMAKE_COMMAND} -E make_directory ${SHADERS_DIR}
126116 )
127117 add_custom_command (
128- OUTPUT ${SHADERS_DIR} /slang.spv
129- COMMAND ${SLANGC_EXECUTABLE} ${SHADER_SOURCES} -target spirv -profile spirv_1_4+spvRayQueryKHR -emit-spirv-directly -fvk-use-entrypoint-name ${ENTRY_POINTS} -o slang.spv
130- WORKING_DIRECTORY ${SHADERS_DIR}
131- DEPENDS ${SHADER_SOURCES}
132- COMMENT "Compiling Slang Shaders for ${TARGET} "
133- VERBATIM
118+ OUTPUT ${SHADERS_DIR} /slang.spv
119+ COMMAND ${SLANGC_EXECUTABLE} ${SHADER_SOURCES} -target spirv -profile spirv_1_4+spvRayQueryKHR -emit-spirv-directly -fvk-use-entrypoint-name ${ENTRY_POINTS} -o slang.spv
120+ WORKING_DIRECTORY ${SHADERS_DIR}
121+ DEPENDS ${SHADERS_DIR} ${SHADER_SOURCES}
122+ COMMENT "Compiling Slang Shaders"
123+ VERBATIM
134124 )
135125 add_custom_target (${TARGET} DEPENDS ${SHADERS_DIR} /slang.spv )
136126endfunction ()
@@ -152,10 +142,9 @@ function (add_chapter CHAPTER_NAME)
152142 # Define VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS to treat VK_ERROR_OUT_OF_DATE_KHR as a success code
153143 target_compile_definitions (${CHAPTER_NAME} PRIVATE "VULKAN_HPP_HANDLE_ERROR_OUT_OF_DATE_AS_SUCCESS" )
154144
155- if (WIN32 )
156- if (${CMAKE_GENERATOR} MATCHES "Visual Studio.*" )
157- set_target_properties (${CHAPTER_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_BINARY_DIR} /${CHAPTER_NAME} " )
158- endif ()
145+ # Set working directory for Visual Studio
146+ if (MSVC )
147+ set_target_properties (${CHAPTER_NAME} PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_BINARY_DIR} /${CHAPTER_NAME} " )
159148 endif ()
160149
161150 if (DEFINED CHAPTER_SHADER)
@@ -177,43 +166,13 @@ function (add_chapter CHAPTER_NAME)
177166 if (DEFINED CHAPTER_MODELS)
178167 list (TRANSFORM CHAPTER_MODELS PREPEND "${CMAKE_CURRENT_SOURCE_DIR} /assets/" )
179168 file (COPY ${CHAPTER_MODELS} DESTINATION ${CMAKE_BINARY_DIR} /${CHAPTER_NAME}/models )
180-
181- if (${CMAKE_GENERATOR} MATCHES "Visual Studio.*" OR
182- ${CMAKE_GENERATOR} MATCHES "Ninja Multi-Config" )
183- sync_directory (
184- "${CMAKE_BINARY_DIR} /${CHAPTER_NAME} /models"
185- "${CMAKE_BINARY_DIR} /${CHAPTER_NAME} /$<CONFIG >/models"
186- ${CHAPTER_NAME}
187- "${CHAPTER_NAME} - Models"
188- )
189- endif ()
190169 endif ()
191170 if (DEFINED CHAPTER_TEXTURES)
192171 list (TRANSFORM CHAPTER_TEXTURES PREPEND "${CMAKE_CURRENT_SOURCE_DIR} /assets/" )
193172 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" )
197- sync_directory (
198- "${CMAKE_BINARY_DIR} /${CHAPTER_NAME} /textures"
199- "${CMAKE_BINARY_DIR} /${CHAPTER_NAME} /$<CONFIG >/textures"
200- ${CHAPTER_NAME}
201- "${CHAPTER_NAME} - Textures"
202- )
203- endif ()
204173 endif ()
205174endfunction ()
206175
207- function (sync_directory SRC_DIR DST_DIR TARGET_NAME LABEL )
208- add_custom_command (
209- TARGET ${TARGET_NAME}
210- POST_BUILD
211- COMMAND ${CMAKE_COMMAND} -E make_directory "${DST_DIR} "
212- COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${SRC_DIR} " "${DST_DIR} "
213- COMMENT "${LABEL} : Syncing directory"
214- )
215- endfunction ()
216-
217176add_chapter (00_base_code )
218177
219178add_chapter (01_instance_creation )
0 commit comments