C++ CMake+;SFML链接器错误,即使在CMakeLists.txt中指定了库

C++ CMake+;SFML链接器错误,即使在CMakeLists.txt中指定了库,c++,cmake,sfml,C++,Cmake,Sfml,我正在使用SFML和CMake制作一个项目。为此,我遵循了。 我正在向我的CMakeLists.txt添加以下行: set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH}) find_package(SFML 2 REQUIRED network audio graphics window system) if(SFML_FOUND) include_directories(${SFML_I

我正在使用SFML和CMake制作一个项目。为此,我遵循了。
我正在向我的CMakeLists.txt添加以下行:

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules" ${CMAKE_MODULE_PATH})
find_package(SFML 2 REQUIRED network audio graphics window system)
if(SFML_FOUND)
  include_directories(${SFML_INCLUDE_DIR})
  target_link_libraries(${EXECUTABLE_NAME} ${SFML_LIBRARIES} ${SFML_DEPENDENCIES})
else()
  message("SFML WAS NOT FOUND")
endif()
这些文字大多是从我提到的指南中抄来的。在ArchLinux上,在从存储库安装SFML之后,这将非常有效,生成的MakeFile将生成一个可执行文件

在Windows上,将SFML_根环境变量设置为我的SFML位置后,CMake成功运行,找到SFML并生成以下输出:

Found SFML 2.4.2 in F:/Dev/CPPLibs/SFML-2.4.2/include
但是,尝试使用生成的MakeFile生成会导致链接器错误:

...
C:\Users\complover116\Documents\CVMControl\src\cl_game.cc:14: error: undefined reference to `_imp___ZN2sf12RenderTarget7setViewERKNS_4ViewE'
C:\Users\complover116\Documents\CVMControl\src\cl_game.cc:15: error: undefined reference to `_imp___ZN2sf12RenderStates7DefaultE'
C:\Users\complover116\Documents\CVMControl\src\cl_game.cc:15: error: undefined reference to `_imp___ZN2sf12RenderTarget4drawERKNS_8DrawableERKNS_12RenderStatesE'
... etc
另外,将调试命令添加到CMakeLists.txt

message(${SFML_LIBRARIES})
输出如下:

debugF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-network-d.aoptimizedF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-network.adebugF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-audio-d.aoptimizedF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-audio.adebugF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-graphics-d.aoptimizedF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-graphics.adebugF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-window-d.aoptimizedF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-window.adebugF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-system-d.aoptimizedF:/Dev/CPPLibs/SFML-2.4.2/lib/libsfml-system.a
它是这样连接的,我没有错误地复制它


我做错了什么?

对于包含列表的变量的输出值,请在其周围使用双引号:
message(${SFML\u LIBRARIES}”)
。这种方式列表元素将用分号(
)分隔。至于出现的错误,它们可能是库使用的编译器与项目使用的编译器之间不兼容的结果。确保对库和项目使用相同的编译器。@Tsyvarev SFML页面直接链接到用于生成正式二进制文件的编译器版本,我专门使用这些版本。但是关于列表-谢谢,我是CMake的新手。您在Windows上使用的构建工具是什么(Visual Studio、MinGW等)?@Tsyvarev我使用MinGW 6.1.0作为变量的输出值,包含一个列表,在其周围使用双引号:
消息(${SFML\u LIBRARIES}”)
。这种方式列表元素将用分号(
)分隔。至于出现的错误,它们可能是库使用的编译器与项目使用的编译器之间不兼容的结果。确保对库和项目使用相同的编译器。@Tsyvarev SFML页面直接链接到用于生成正式二进制文件的编译器版本,我专门使用这些版本。但是关于列表-谢谢,我是CMake的新手。您在Windows上使用哪个构建工具(Visual Studio、MinGW等)?@Tsyvarev我使用的是MinGW 6.1.0