[cmake] Updated installation process to use modern CMake targets
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a14bc8a..879eaee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt
@@ -24,7 +24,9 @@ CXX_STANDARD_REQUIRED ON ) -target_include_directories(VulkanMemoryAllocator PUBLIC "${PROJECT_SOURCE_DIR}/include") +target_include_directories(VulkanMemoryAllocator PUBLIC + $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> +) # Only link to Vulkan if static linking is used if(${VMA_STATIC_VULKAN_FUNCTIONS}) @@ -44,8 +46,7 @@ VMA_RECORDING_ENABLED=$<BOOL:${VMA_RECORDING_ENABLED}> ) -install(TARGETS VulkanMemoryAllocator DESTINATION "lib") -install(FILES "${PROJECT_SOURCE_DIR}/include/vk_mem_alloc.h" DESTINATION "include") +include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/install_target.cmake) if(VMA_BUILD_SAMPLE) if(WIN32)
diff --git a/src/cmake/Config.cmake.in b/src/cmake/Config.cmake.in new file mode 100644 index 0000000..a7d7543 --- /dev/null +++ b/src/cmake/Config.cmake.in
@@ -0,0 +1,10 @@ +@PACKAGE_INIT@ + +include(CMakeFindDependencyMacro) + +find_package(Vulkan REQUIRED) + +include("${CMAKE_CURRENT_LIST_DIR}/VulkanMemoryAllocatorTargets.cmake") +check_required_components("@PROJECT_NAME@") + +
diff --git a/src/cmake/install_target.cmake b/src/cmake/install_target.cmake new file mode 100644 index 0000000..6ddd455 --- /dev/null +++ b/src/cmake/install_target.cmake
@@ -0,0 +1,32 @@ +include(GNUInstallDirs) +target_include_directories(VulkanMemoryAllocator PUBLIC + $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDE_DIRS}> +) +install(TARGETS VulkanMemoryAllocator + EXPORT VulkanMemoryAllocatorTargets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) +# install(FILES "${PROJECT_SOURCE_DIR}/include/vk_mem_alloc.h" DESTINATION "include") +install(FILES "${PROJECT_SOURCE_DIR}/include/vk_mem_alloc.h" + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) +install(EXPORT VulkanMemoryAllocatorTargets + FILE VulkanMemoryAllocatorTargets.cmake + NAMESPACE VulkanMemoryAllocator:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VulkanMemoryAllocator +) +include(CMakePackageConfigHelpers) +configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/VulkanMemoryAllocatorConfig.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VulkanMemoryAllocator +) +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/VulkanMemoryAllocatorConfig.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VulkanMemoryAllocator +) + + +