Программы на C++. Форум разработчиков
Anonymous
Vulkansdk, получая библиотеку с Cmake
Сообщение
Anonymous » 06 май 2025, 22:30
Я пытаюсь связать Vulkan с моим проектом в Cmake. Я хочу скачать vulkansdk с Cmake, не зависящий чем-то, кроме Cmake.
Код: Выделить всё
include(FetchContent)
set(VULKAN_VER_MAJOR 1)
set(VULKAN_VER_MINOR 3)
set(VULKAN_VER_PATCH 275)
set(VULKAN_VERSION ${VULKAN_VER_MAJOR}.${VULKAN_VER_MINOR}.${VULKAN_VER_PATCH})
FetchContent_Declare(
vulkanheaders
GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers.git
GIT_TAG v${VULKAN_VERSION}
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
)
FetchContent_Declare(
vulkanloader
GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Loader.git
GIT_TAG v${VULKAN_VERSION}
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
)
FetchContent_Declare(
vulkanvalidation
GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-ValidationLayers.git
GIT_TAG v${VULKAN_VERSION}
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
)
FetchContent_Declare(
vulkantools
GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Tools.git
GIT_TAG v${VULKAN_VERSION}
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
)
set(PROJECT_IS_TOP_LEVEL OFF)
FetchContent_MakeAvailable(vulkanheaders)
FetchContent_MakeAvailable(vulkanloader)
FetchContent_MakeAvailable(vulkanvalidation)
FetchContent_MakeAvailable(vulkantools)
add_library(myvulkan INTERFACE IMPORTED)
target_include_directories(myvulkan INTERFACE ${vulkan_headers_SOURCE_DIR}/include
${vulkan_loader_SOURCE_DIR}/loader
${vulkan_validation_layers_SOURCE_DIR}/layers
${vulkan_tools_SOURCE_DIR}/vulkaninfo)
target_link_libraries(myvulkan INTERFACE Vulkan::Vulkan)
target_link_libraries(myvulkan INTERFACE
Vulkan::Loader
Vulkan::ValidationLayers
)
# Add source to this project's executable.
add_executable (VulkanTest "VulkanTest.cpp" "VulkanTest.h")
target_link_libraries(VulkanTest PRIVATE myvulkan)
if (CMAKE_VERSION VERSION_GREATER 3.12)
set_property(TARGET VulkanTest PROPERTY CXX_STANDARD 20)
endif()
< /code>
Я попытался использовать EdenderProject, но каким-то образом он делает то же самое, что и FetchContent: < /p>
include(FetchContent)
include(ExternalProject)
set(VULKAN_VER_MAJOR 1)
set(VULKAN_VER_MINOR 3)
set(VULKAN_VER_PATCH 275)
set(VULKAN_VERSION ${VULKAN_VER_MAJOR}.${VULKAN_VER_MINOR}.${VULKAN_VER_PATCH})
ExternalProject_Add(
vulkan
PREFIX Vulkan
GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers.git
GIT_TAG v${VULKAN_VERSION}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
)
ExternalProject_Get_Property(vulkan SOURCE_DIR)
include_directories(${SOURCE_DIR}/include)
add_library(Vulkan INTERFACE)
add_dependencies(Vulkan vulkan)
# Add source to this project's executable.
add_executable (VulkanTest "VulkanTest.cpp" "VulkanTest.h")
target_link_libraries(VulkanTest Vulkan)
if (CMAKE_VERSION VERSION_GREATER 3.12)
set_property(TARGET VulkanTest PROPERTY CXX_STANDARD 20)
endif()
Я даже не не начинаю реализовывать сценарий для загрузки dxcompilerd, glslangd, shaderc_combinedd, spirv-cross-cross и т. Д.>
Подробнее здесь:
https://stackoverflow.com/questions/783 ... with-cmake
1746559807
Anonymous
Я пытаюсь связать Vulkan с моим проектом в Cmake. Я хочу скачать vulkansdk с Cmake, не зависящий чем-то, кроме Cmake.[code]include(FetchContent) set(VULKAN_VER_MAJOR 1) set(VULKAN_VER_MINOR 3) set(VULKAN_VER_PATCH 275) set(VULKAN_VERSION ${VULKAN_VER_MAJOR}.${VULKAN_VER_MINOR}.${VULKAN_VER_PATCH}) FetchContent_Declare( vulkanheaders GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers.git GIT_TAG v${VULKAN_VERSION} GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) FetchContent_Declare( vulkanloader GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Loader.git GIT_TAG v${VULKAN_VERSION} GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) FetchContent_Declare( vulkanvalidation GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-ValidationLayers.git GIT_TAG v${VULKAN_VERSION} GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) FetchContent_Declare( vulkantools GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Tools.git GIT_TAG v${VULKAN_VERSION} GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) set(PROJECT_IS_TOP_LEVEL OFF) FetchContent_MakeAvailable(vulkanheaders) FetchContent_MakeAvailable(vulkanloader) FetchContent_MakeAvailable(vulkanvalidation) FetchContent_MakeAvailable(vulkantools) add_library(myvulkan INTERFACE IMPORTED) target_include_directories(myvulkan INTERFACE ${vulkan_headers_SOURCE_DIR}/include ${vulkan_loader_SOURCE_DIR}/loader ${vulkan_validation_layers_SOURCE_DIR}/layers ${vulkan_tools_SOURCE_DIR}/vulkaninfo) target_link_libraries(myvulkan INTERFACE Vulkan::Vulkan) target_link_libraries(myvulkan INTERFACE Vulkan::Loader Vulkan::ValidationLayers ) # Add source to this project's executable. add_executable (VulkanTest "VulkanTest.cpp" "VulkanTest.h") target_link_libraries(VulkanTest PRIVATE myvulkan) if (CMAKE_VERSION VERSION_GREATER 3.12) set_property(TARGET VulkanTest PROPERTY CXX_STANDARD 20) endif() < /code> Я попытался использовать EdenderProject, но каким-то образом он делает то же самое, что и FetchContent: < /p> include(FetchContent) include(ExternalProject) set(VULKAN_VER_MAJOR 1) set(VULKAN_VER_MINOR 3) set(VULKAN_VER_PATCH 275) set(VULKAN_VERSION ${VULKAN_VER_MAJOR}.${VULKAN_VER_MINOR}.${VULKAN_VER_PATCH}) ExternalProject_Add( vulkan PREFIX Vulkan GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Headers.git GIT_TAG v${VULKAN_VERSION} CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" LOG_DOWNLOAD ON ) ExternalProject_Get_Property(vulkan SOURCE_DIR) include_directories(${SOURCE_DIR}/include) add_library(Vulkan INTERFACE) add_dependencies(Vulkan vulkan) # Add source to this project's executable. add_executable (VulkanTest "VulkanTest.cpp" "VulkanTest.h") target_link_libraries(VulkanTest Vulkan) if (CMAKE_VERSION VERSION_GREATER 3.12) set_property(TARGET VulkanTest PROPERTY CXX_STANDARD 20) endif() [/code] Я даже не не начинаю реализовывать сценарий для загрузки dxcompilerd, glslangd, shaderc_combinedd, spirv-cross-cross и т. Д.> Подробнее здесь: [url]https://stackoverflow.com/questions/78373335/vulkansdk-fetching-the-library-with-cmake[/url]