diff --git a/config/lib/VulkanMemoryAllocator.cmake b/config/lib/VulkanMemoryAllocator.cmake
index 3d5b0937dfcfa27d783a74384c8cc4f28e7fa102..6dc61dd1722fefecc204fa67f42f76cc32fd858f 100644
--- a/config/lib/VulkanMemoryAllocator.cmake
+++ b/config/lib/VulkanMemoryAllocator.cmake
@@ -13,8 +13,17 @@ if (${vma_hpp_status})
 	
 	set(VMA_RECORDING_ENABLED OFF CACHE INTERNAL "")
 	set(VMA_USE_STL_CONTAINERS OFF CACHE INTERNAL "")
-	set(VMA_STATIC_VULKAN_FUNCTIONS ON CACHE INTERNAL "")
-	set(VMA_DYNAMIC_VULKAN_FUNCTIONS OFF CACHE INTERNAL "")
+	
+	string(COMPARE EQUAL "${vkcv_build_attribute}" "SHARED" VMA_USE_DYNAMIC_LINKING)
+	
+	if (${VMA_USE_DYNAMIC_LINKING})
+		set(VMA_STATIC_VULKAN_FUNCTIONS OFF CACHE INTERNAL "")
+		set(VMA_DYNAMIC_VULKAN_FUNCTIONS ON CACHE INTERNAL "")
+	else()
+		set(VMA_STATIC_VULKAN_FUNCTIONS ON CACHE INTERNAL "")
+		set(VMA_DYNAMIC_VULKAN_FUNCTIONS OFF CACHE INTERNAL "")
+	endif()
+	
 	set(VMA_DEBUG_ALWAYS_DEDICATED_MEMORY OFF CACHE INTERNAL "")
 	set(VMA_DEBUG_INITIALIZE_ALLOCATIONS OFF CACHE INTERNAL "")
 	set(VMA_DEBUG_GLOBAL_MUTEX OFF CACHE INTERNAL "")
diff --git a/config/lib/vma/CMakeLists.txt b/config/lib/vma/CMakeLists.txt
index a656c6f5f20e296286df2b34ecf4b511a5340640..8b177fdcb8eb2c3cb71d5142fe13ceb79b4cb36f 100644
--- a/config/lib/vma/CMakeLists.txt
+++ b/config/lib/vma/CMakeLists.txt
@@ -30,7 +30,11 @@ message(STATUS "VMA_DEBUG_INITIALIZE_ALLOCATIONS = ${VMA_DEBUG_INITIALIZE_ALLOCA
 message(STATUS "VMA_DEBUG_GLOBAL_MUTEX = ${VMA_DEBUG_GLOBAL_MUTEX}")
 message(STATUS "VMA_DEBUG_DONT_EXCEED_MAX_MEMORY_ALLOCATION_COUNT = ${VMA_DEBUG_DONT_EXCEED_MAX_MEMORY_ALLOCATION_COUNT}")
 
-add_library(VulkanMemoryAllocator vma.cpp)
+if (${VMA_STATIC_VULKAN_FUNCTIONS})
+	add_library(VulkanMemoryAllocator STATIC vma.cpp)
+else()
+	add_library(VulkanMemoryAllocator SHARED vma.cpp)
+endif()
 
 set_target_properties(
 		VulkanMemoryAllocator PROPERTIES