Каталог GLFW не найден с CMake и vcpkg

Мне не удалось выяснить, как заставить CMake найти и установить правильные константы CMake GLFW при использовании CMake в VS2017. Любая помощь будет оценена :).

Я загрузил glfw3 через Microsoft vcpkg инструмент. Я проверил, что файлы физически существуют в каталоге, который vcpkg кладет их в (~\vcpkg\installed\x86-windows\include). Я настроил свой CMakeSettings.json согласно их документам Вот. Я использовал это руководство как основу для правильной настройки GLFW.

Я тогда использую find_package(glfw3 REQUIRED) найти glfw3 библиотека. Это не выкладывает никаких ошибок. На самом деле CMakeLists.txt не жалуется вообще. Это на этапе компиляции, где он жалуется.

После этого я добавляю glfw3 с target_link_libraries(exe ${GLFW3_LIBRARIES}) в исполняемый файл.

Затем, когда я пытаюсь построить простой пример (включая файл заголовка), компиляция завершается неудачно, потому что не может найти GLFW/glfw3.h,

Ошибка от MSVC:

fatal error C1083: Cannot open include file: 'GLFW/glfw3.h': No such file or directory

Вот мой CMakeLists.txt для дополнительной ссылки:

cmake_minimum_required(VERSION 3.7)
project(learn-opengl)
find_package(glfw3 REQUIRED)

add_executable(learn-opengl main.cpp)
target_link_libraries(learn-opengl ${GLFW3_LIBRARIES})

GLFW3_LIBRARIES Я получил от glfw3Config.cmake шпионя вокруг чего vcpkg помещает в установленный каталог (~\vcpkg\installed\x86-windows\share\glfw3)

И на всякий случай main.cpp:

#include <GLFW/glfw3.h>

int main()
{
return 0;
}

Я пробовал звонить cmake из командной строки, но безрезультатно, что тоже не сработало.

Я что-то пропустил? Возможно, я что-то неправильно поняла в vcpkg документация? Я действительно понятия не имею, что мне не хватает …: / Кроме того, я должен сказать, что я тоже новичок в CMake.

1

Решение

Переформулировка моего предыдущего комментария как ответа:

Вы должны добавить импортированную цель glfw на ваш target_link_libraries команда вместо ${GLFW3_LIBRARIES},
find_package(glfw3) генерирует цель импорта glfw, Делая вашу цель learn-opengl в зависимости от этой импортируемой цели вы указываете и библиотеку для связи, и включаемые каталоги.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]