SFML 库 - 在 MinGW 构建期间出现 NOTFOUND 错误

SFML library-NOTFOUND error during MinGW build

我正在尝试通过以下方式构建测试 SFML 程序:

Windows10、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

有人知道问题出在哪里吗?

SFML 库的完整路径包含方括号 [ ]:

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

这是 CMake 的问题(参见 this question), as square brackets are special characters used to denote bracket arguments 和引用。

在这种情况下,在路径中使用方括号会导致奇怪的行为,因为 find_package 调用似乎成功了,但您的 sfml-* 目标未正确创建(例如 sfml-audio-NOTFOUND) .

所以,把你项目的目录名改成去掉方括号,重新运行CMake,然后重新build。