【问题标题】:Vulkan HPP with cmake带有 cmake 的 Vulkan HPP
【发布时间】:2021-09-11 15:49:50
【问题描述】:

我正在尝试使用带有 fetch_content 的 cmake 包含 vulkan hpp 库(我想自动执行此操作,并且我不希望用户手动安装 vulkan,如果这是错误的方法,请告诉我,因为我才刚刚开始with cmake) 如下代码所示sn -p

include(FetchContent)

FetchContent_Declare(
        vulkanhpp
        GIT_REPOSITORY https://github.com/KhronosGroup/Vulkan-Hpp.git
        GIT_TAG b97783be3ed973f4e0d96fc7c680920f5ab0aa3a #1.2.191
)

FetchContent_GetProperties(vulkanhpp)
if ( NOT vulkanhpp_POPULATED )
    message ( STATUS "Fetching vulkanhpp" )
    FetchContent_Populate(vulkanhpp)

    set ( SAMPLES_BUILD OFF CACHE INTERNAL "Build the vulkan hpp samples" )
    set ( VULKAN_HPP_INSTALL OFF CACHE INTERNAL "Install vulkan hpp" )

    add_subdirectory ( ${vulkanhpp_SOURCE_DIR} ${vulkanhpp_BINARY_DIR} )
endif ()

现在我的问题是,当我放入 cpp 文件时,我不知道如何在 main.cpp 文件中包含“include”文件夹:

#include "vulkan/vulkan.hpp"

不将完整路径放在 CMakeLists.txt 中,而是使用一些 CMake 变量

我的其他cmake列表如下

include_directories ( "" ) ### what should I put here for include vulkan hpp library ###

# Add source to this project's executable.
add_executable ( example "main.cpp" )

这是自动管理 vulkan hpp 依赖项的正确方法吗?不使用 find_package 还有其他选择吗?

【问题讨论】:

    标签: c++ cmake vulkan


    【解决方案1】:

    您指定的存储库实际上并不包含 Vulkan 标头。请改用this。它提供了一个CMakeLists.txt 文件,该文件将标题添加到名为Vulkan::Headers 的库中,因此您只需添加子目录,然后使用target_link_libraries(example PRIVATE Vulkan::Headers) 链接到它们。 但你为什么要这样做?要使用 Vulkan,您必须安装 Vulkan SDK(实际库),并且 SDK 还包含标头。

    【讨论】:

    • 嗨,柯比,感谢您的回答,它真的很有用。关于您的问题,我想要一个项目,任何人(在 Mac、Windows、Linux 中)都可以从 git 克隆并运行 cmake,他们可以访问所有依赖项以及项目中链接的依赖项。我是我找到的最好的方式,我不确定它是否是最好的
    • 通常需要将 Vulkan 标头作为您自己的代码库的一部分提供,因为标头不一定向后兼容。所以特定版本的 git 子模块在很多现有项目中是必须的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    相关资源
    最近更新 更多