Skip to content

Commit b389bcc

Browse files
committed
Detect and handle Vulkan SDK version changes in CMake
- Extract Vulkan SDK version from environment variable. - Add cache-based version detection to identify changes. - Clear related CMake cache entries on version update. - Cache the current Vulkan SDK version for future checks.
1 parent b905f36 commit b389bcc

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

attachments/CMakeLists.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,28 @@ if(NOT DEFINED ENV{VULKAN_SDK})
88
message(WARNING "VULKAN_SDK environment variable is not set. This may cause issues with finding Vulkan SDK.")
99
endif()
1010

11+
# Extract Vulkan SDK version from path to detect version changes
12+
if(DEFINED ENV{VULKAN_SDK})
13+
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+" VULKAN_SDK_VERSION "$ENV{VULKAN_SDK}")
14+
15+
# Check if cached version exists and is different from current version
16+
if(DEFINED CACHE{VULKAN_SDK_CACHED_VERSION} AND NOT VULKAN_SDK_VERSION STREQUAL VULKAN_SDK_CACHED_VERSION)
17+
message(STATUS "Vulkan SDK version changed from ${VULKAN_SDK_CACHED_VERSION} to ${VULKAN_SDK_VERSION}")
18+
message(STATUS "Clearing CMake cache to ensure correct paths are used")
19+
20+
# Force CMake to reconfigure by removing cache entries related to Vulkan
21+
unset(Vulkan_INCLUDE_DIR CACHE)
22+
unset(Vulkan_LIBRARY CACHE)
23+
unset(VulkanHpp_CPPM_DIR CACHE)
24+
unset(GLSLANG_VALIDATOR CACHE)
25+
unset(SLANGC_EXECUTABLE CACHE)
26+
endif()
27+
28+
# Store current version in cache
29+
set(VULKAN_SDK_CACHED_VERSION ${VULKAN_SDK_VERSION} CACHE STRING "Cached Vulkan SDK version" FORCE)
30+
message(STATUS "Using Vulkan SDK version: ${VULKAN_SDK_VERSION}")
31+
endif()
32+
1133
project (VulkanTutorial)
1234

1335
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake")

0 commit comments

Comments
 (0)