Мне не удалось выяснить, как заставить 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.
Переформулировка моего предыдущего комментария как ответа:
Вы должны добавить импортированную цель glfw
на ваш target_link_libraries
команда вместо ${GLFW3_LIBRARIES}
,
find_package(glfw3)
генерирует цель импорта glfw
, Делая вашу цель learn-opengl
в зависимости от этой импортируемой цели вы указываете и библиотеку для связи, и включаемые каталоги.
Других решений пока нет …