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。
我正在尝试通过以下方式构建测试 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。