Я немного застрял с проблемой, пытаясь создать простую тестовую программу с использованием SFML и SFGUI. Это на Windows, и я использовал cmake для генерации проектов Visual Studio 2017.
Сначала я клонировал SFML и SFGUI из github и сгенерировал файлы решения. Я запустил Visual Studio в режиме администратора и собрал проект INSTALL с целями выпуска и отладки, чтобы все они были собраны и добавлены C:\Program Files (x86)\SFML\
а также C:\Program Files (x86)\SFGUI\
соответственно. Все построено и установлено нормально прямо из коробки. Я также добавил эти два каталога в мой PATH
переменная окружения. Я могу создавать и запускать примеры проектов, которые поставляются с SFGUI, которые отображаются в файле решения.
Так что теперь я иду и создаю свой собственный проект, и все начинает разваливаться. Импорт SFML сам по себе работает нормально. У меня есть простая программа, которая открывает окно и работает нормально. Когда я добавляю в find_package(SFGUI REQUIRED)
CMake не удается, когда проект пытается обновить. Я получаю следующую ошибку:
2>CMake Error at C:/Program Files (x86)/SFGUI/cmake/SFGUITargets.cmake:78 (message):
2> The imported target "SFGUI::SFGUI" references the file
2>
2> "C:/Program Files (x86)/lib/SFGUI-d.lib"2>
2> but this file does not exist. Possible reasons include:
2>
2> * The file was deleted, renamed, or moved to another location.
2>
2> * An install or uninstall procedure did not complete successfully.
2>
2> * The installation package was faulty and contained
2>
2> "C:/Program Files (x86)/SFGUI/cmake/SFGUITargets.cmake"2>
2> but not all the files it references.
Обратите внимание на ошибку, файл "C:/Program Files (x86)/lib/SFGUI-d.lib"
и не "C:/Program Files (x86)/SFGUI/lib/SFGUI-d.lib"
, Первый является недопустимым каталогом, последний фактически существует.
Глядя на файлы SFGUI cmake, он выглядит как переменная _IMPORT_PREFIX
устанавливается на C:/Program Files (x86)/
, когда я думаю, что это должно быть установлено на C:/Program Files (x86)/SFGUI
, Я думаю, что переменная устанавливается при вызове set_target_properties
в SFGUITargets[-debug].cmake
, Я не уверен, является ли это основной проблемой, или если это так, почему это неправильно. Есть идеи, что я сделал не так?
Вот весь мой CMakeLists.txt на случай, если это поможет:
cmake_minimum_required(VERSION 3.1)
set(PROJECT_NAME TestProj)
project(${PROJECT_NAME})
set(SOURCES src/main.cpp)
find_package(OpenGL REQUIRED)
find_package(SFML 2.5 REQUIRED COMPONENTS graphics window audio network system)
find_package(SFGUI REQUIRED) # Errors here. Without this line it's fine.
add_executable(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME} sfml-graphics sfml-window sfml-audio sfml-network sfml-system)
Задача ещё не решена.
Других решений пока нет …