没有这样的文件或目录 vulkan.h

问题描述 投票:0回答:1

我正在尝试使用 Vulkan 创建一个项目,对于我的项目,我使用 CMake。当我尝试构建项目时出现错误 D:/programming/c++/stlViewer/external/glfw/include/GLFW/glfw3.h:111:12:致命错误:vulkan/vulkan.h:没有这样的文件或目录

我已正确安装 Vulkan SDK,并且其路径也正确。这是项目的结构 enter image description here 这是 CMakeLists

cmake_minimum_required(VERSION 3.29 FATAL_ERROR)
set(PROJECT_NAME stlViewer)

project(${PROJECT_NAME})

add_executable(${PROJECT_NAME} src/main.cpp)

set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)

find_package(Vulkan REQUIRED)
target_include_directories (${PROJECT_NAME} PUBLIC ${VULKAN_INCLUDE_DIRS})
target_link_libraries (${PROJECT_NAME} PUBLIC ${VULKAN_LIB_LIST})

add_subdirectory(external/glfw)
target_link_libraries(${PROJECT_NAME} glfw)

add_subdirectory(external/glm)
target_link_libraries(${PROJECT_NAME} glm)

这里还有一个main.cpp

#define GLFW_INCLUDE_VULKAN
#include <GLFW/glfw3.h>

#define GLM_FORCE_RADIANS
#define GLM_FORCE_DEPTH_ZERO_TO_ONE
#include <glm/vec4.hpp>
#include <glm/mat4x4.hpp>

#include <iostream>

int main() {
    glfwInit();

    glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
    GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr);

    uint32_t extensionCount = 0;
    vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);

    std::cout << extensionCount << " extensions supported\n";

    glm::mat4 matrix;
    glm::vec4 vec;
    auto test = matrix * vec;

    while(!glfwWindowShouldClose(window)) {
        glfwPollEvents();
    }

    glfwDestroyWindow(window);

    glfwTerminate();

    return 0;
}

我不知道我应该做什么。请帮助我。

c++ 3d vulkan
1个回答
0
投票

Blockquote始终链接到 find_package 生成的目标而不是使用变量,它们要可靠得多 cmake.org/cmake/help/latest/module/… (您有一个拼写错误 Vulkan_INCLUDE_DIRS 而不是 VULKAN_INCLUDE_DIRS,使用目标拼写错误会导致 cmake 错误) – 艾伦·伯特尔斯

我爱你,这是正确的 CMakeLists 文件

project(${PROJECT_NAME})

add_executable(${PROJECT_NAME} src/main.cpp)

set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)

find_package(Vulkan REQUIRED)
target_include_directories (${PROJECT_NAME} PUBLIC ${Vulkan_INCLUDE_DIRS})
target_link_libraries (${PROJECT_NAME} PUBLIC ${Vulkan_LIBRARIES})

add_subdirectory(external/glfw)
target_link_libraries(${PROJECT_NAME} PUBLIC glfw)

add_subdirectory(external/glm)
target_link_libraries(${PROJECT_NAME} PUBLIC glm)
© www.soinside.com 2019 - 2024. All rights reserved.