Ошибка NOTFOUND библиотеки SFML во время сборки MinGW - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь построить тестовую программу SFML следующим образом:

Windows 10, CLion, MinGW64, CMake, SFML-2.5.1

CmakeList. txt

cmake_minimum_required(VERSION 3.14)
project(Test_sfml_cmake_)

set(CMAKE_CXX_STANDARD 17)
cmake_minimum_required(VERSION 3.0)

set(SFML_DIR "SFML-2.5.1/lib/cmake/SFML")

find_package(SFML 2.5 COMPONENTS graphics audio REQUIRED)
add_executable(SFMLTest main.cpp)
target_link_libraries(SFMLTest sfml-graphics sfml-audio)

Сборка MinGW завершается с ошибкой (полный вывод):

-- Found SFML 2.5.1 in D:/_Documents/Cpp Projects/Test_sfml[cmake]/SFML-2.5.1/lib/cmake/SFML
-- Configuring done
-- Generating done
-- Build files have been written to: D:/_Documents/Cpp Projects/Test_sfml[cmake]/cmake-build-debug
Scanning dependencies of target SFMLTest
mingw32-make.exe[2]: *** No rule to make target 'sfml-audio-NOTFOUND', needed by 'SFMLTest.exe'.  Stop.
mingw32-make.exe[2]: *** Waiting for unfinished jobs....
[ 50%] Building CXX object CMakeFiles/SFMLTest.dir/main.cpp.obj
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:72: CMakeFiles/SFMLTest.dir/all] Error 2
mingw32-make.exe: *** [Makefile:83: all] Error 2

Кто-нибудь знает, в чем проблема?

1 Ответ

0 голосов
/ 19 июня 2020

Ваш полный путь к библиотеке SFML содержит скобки [ ]:

"D:/_Documents/Cpp Projects/Test_sfml[cmake]/SFML-2.5.1"

Это проблема для CMake (см. этот вопрос ), поскольку квадратные скобки используются для специальных символов. для обозначения аргументов в скобках и кавычек.

Использование квадратных скобок в пути вызывает странное поведение в этом случае, потому что вызов find_package кажется успешным, но ваши цели sfml-* не созданы должным образом (например, sfml-audio-NOTFOUND).

Итак, просто измените имя каталога вашего проекта на удалите квадратные скобки, повторно запустите CMake, а затем заново соберите.

...