CMake 3.12 с Vulkan в проблемах CLion - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь правильно связать Vulkan в CMake, и я получаю сообщение об ошибке при попытке обновить / собрать.Вот мой CMakeList.txt:

cmake_minimum_required(VERSION 3.12)
project(game)

set(CMAKE_CXX_STANDARD 17)
set(SOURCE_FILES game.cpp window.cpp window.hpp type_definitions.hpp windows_definitions.hpp)

add_executable(${PROJECT_NAME} ${SOURCE_FILES})

find_package(Vulkan REQUIRED)

include_directories(${Vulkan_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${Vulkan_LIBRARY})

Однако я получаю следующую ошибку:

C: \ Users \ username.CLion2018.2 \ system \ cygwin_cmake \ bin \cmake.exe -DCMAKE_BUILD_TYPE = Debug -G "CodeBlocks - Makefiles Unix" / cygdrive / c / Пользователи / имя пользователя / Проекты / Программирование / игра - Не удалось найти Vulkan (отсутствует: Vulkan_LIBRARY) Ошибка CMake: в этом используются следующие переменныепроект, но они установлены в NOTFOUND.Пожалуйста, установите их или убедитесь, что они установлены и проверены правильно в файлах CMake: Vulkan_LIBRARY (ADVANCED), связанный с целевой «игрой» в каталоге / cygdrive / c / Users / username / Projects / Programming / game

Итак, я попытался сделать это вручную:

cmake_minimum_required(VERSION 3.12)
project(game)

set(CMAKE_CXX_STANDARD 17)
set(SOURCE_FILES game.cpp window.cpp window.hpp type_definitions.hpp windows_definitions.hpp)

add_executable(${PROJECT_NAME} ${SOURCE_FILES})

find_path(Vulkan_INCLUDE_DIR NAMES vulkan/vulkan.h PATHS "$ENV{VULKAN_SDK}/Include")
find_library(Vulkan_LIBRARY NAMES "vulkan-1" PATHS "$ENV{VULKAN_SDK}/Lib" NO_DEFAULT_PATH)

include_directories(${Vulkan_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${Vulkan_LIBRARY})

И все равно получаю еще одну ошибку ...

C: \ Users \ username.CLion2018.2 \ system\ cygwin_cmake \ bin \ cmake.exe -DCMAKE_BUILD_TYPE = Debug -G "CodeBlocks - Makefiles Unix" / cygdrive / c / Пользователи / имя пользователя / Проекты / Программирование / игра Ошибка CMake: в этом проекте используются следующие переменные, но они установленыНЕ НАЙДЕН.Пожалуйста, установите их или убедитесь, что они установлены и проверены правильно в файлах CMake: Vulkan_LIBRARY связан целевой «игрой» в каталоге / cygdrive / c / Users / имя пользователя / Projects / Programming / game

Сейчасэто сбивает меня с толку, потому что я установил Vulkan SDK и моя переменная пути VULKAN_SDK установлена ​​правильно.Похоже, что он правильно собирает каталог include, и происходит сбой только при попытке получить библиотеку.Я также проверил в своем проводнике, что файл vulkan-1.lib существует и находится в пути, который ищется по $ENV{VULKAN_SDK}/Lib.Что возможно могло пойти не так?Это как-то связано с cygwin или моей версией cmake?Я использую c ++ (GCC) 7.3.0 из cygwin x64 и cmake 3.12.3 в комплекте с CLion.

РЕДАКТИРОВАТЬ: Это работает, но я не хочу, чтобы это было постоянное решение:

cmake_minimum_required(VERSION 3.12)
project(game)

set(CMAKE_CXX_STANDARD 17)
set(SOURCE_FILES game.cpp window.cpp window.hpp type_definitions.hpp windows_definitions.hpp)

add_executable(${PROJECT_NAME} ${SOURCE_FILES})

include_directories("$ENV{VULKAN_SDK}/Include")
target_link_libraries(${PROJECT_NAME} "$ENV{VULKAN_SDK}/Lib/vulkan-1.lib")
...