我好像无法链接SFML
到我的可执行文件使用cmake
.
CMakeLists.txt:
cmake_minimum_required(VERSION 3.0.0)
project(Tut3)
set(LIBS_DIR ~/../../Libraries)
add_executable(Tut3 main.cpp)
set(CMAKE_MODULE_PATH ${LIBS_DIR}/sfml/cmake/Modules)
find_package(SFML REQUIRED system window graphics)
target_link_libraries(Tut3 ${SFML_LIBRARIES})
运行 cmake 时出现错误:
CMake 错误位于 C:/Libraries/sfml/cmake/Modules/FindSFML.cmake:355
(消息):找不到 SFML(缺少:SFML_SYSTEM_LIBRARY
SFML_WINDOW_LIBRARY SFML_GRAPHICS_LIBRARY)
调用堆栈(首先是最近的调用):CMakeLists.txt:9 (find_package)
sfml目录包含32位MinGW
编译的sfml
存储库。我正在使用Windows。我使用的cmake命令是:
cmake -G "MinGW Makefiles" ..dir..
查找 SFML 的模块不会相对于其自身位置进行查找。相反,除了一些特定变量之外,它还会尝试一些常见路径(非 Windows 系统)来尝试查找实际的库。
为了解决这个问题,你应该做两件事:
- 移动
FindSFML.cmake
将脚本复制到您自己项目的子目录中,例如cmake/FindSFML.cmake
并调整CMAKE_MODULE_PATH
相应的值。
- 添加新的 CMake 变量
SFML_ROOT
指向您安装 SFML 的目录(在您的情况下C:/Libraries/sfml
)。这不应该被硬编码在CMakeLists.txt
文件,而是在调用 CMake 时传递一次(即cmake -DSFML_ROOT=C:/...
;这保存在缓存中)。
您的结构也存在一些问题CMakeLists.txt
。你应该使用这个:
cmake_minimum_required(VERSION 3.0.0)
project(Tut3)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) # Tell CMake where to find the module
find_package(SFML REQUIRED COMPONENTS graphics window system) # Look for SFML
include_directories(${SFML_INCLUDE_DIR}) # You forgot this line above; add SFML's include dir
add_executable(Tut3 main.cpp) # Define the target
target_link_libraries(Tut3 ${SFML_LIBRARIES} ${SFML_DEPENDENCIES}) # Link SFML and dependencies
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)