0. 目录结构
1. 使用cmake-gui
设置好source code和build the binaries
点击Configure,设置目标visual studio版本和目标平台
点击finish后,会提示报错
CMake Error at cmake_modules/FindSFML.cmake:358 (message):
Could NOT find SFML (missing: SFML_AUDIO_LIBRARY SFML_NETWORK_LIBRARY
SFML_GRAPHICS_LIBRARY SFML_WINDOW_LIBRARY SFML_SYSTEM_LIBRARY)
Call Stack (most recent call first):
CMakeLists.txt:91 (find_package)
原因是cmake找不到SFML库
2. 修改CMakeLists.txt
查看cmake_modules里面的cmake内容
发现他的查找逻辑其实一般是在linux系统里找FSML路径的,但是我们可以利用${SFML_ROOT}这个变量,设置为我们SFML库的windows路径
3. 下载Windows的SFML库
官方网址:SFML
点击下载
根据自己电脑选择合适的版本下载
我的电脑是64位的
下载完成之后将文件放在一个自己方便找到的地方,例如
D:\path\SFML-2.6.1
4. 编译
点击environment,然后设置上面我们提到的变量,key设置为SFML_ROOT,value设置为我们的SFML路径
然后点击configure,点击generate,最后生成sln。
下面我们就可以使用visual studio 打开项目
但是打开项目编译后,发现找不到FSML头文件,我们需要修改CMakeLists.txt文件,以便找到对应SFML头文件和SFML库。
在CMakeLists.txt文件增加如下内容
# set(SFML_DIR "D:/path/SFML-2.6.1/lib/cmake/SFML")
cmake_policy(SET CMP0074 NEW)
# 假设SFML_ROOT环境变量已经设置
if(DEFINED ENV{SFML_ROOT})
set(SFML_ROOT $ENV{SFML_ROOT})
set(SFML_INCLUDE_DIR "${SFML_ROOT}/include")
#增加SFML头文件
include_directories(${SFML_INCLUDE_DIR})
# 如果你还需要链接SFML的库,你可能还需要设置库目录和链接库
# 这里只是示例,具体路径和库名可能有所不同
#set(SFML_LIBRARIES sfml-graphics sfml-window sfml-system)
# 假设库文件在SFML_ROOT/lib中(对于Windows可能是SFML_ROOT/bin)
link_directories("${SFML_ROOT}/lib")
# 然后在你的target_link_libraries中使用SFML_LIBRARIES
endif()
然后重新上面使用cmake-gui生成一个sln。
5.运行项目
经过上面的步骤,就可以打开sln了,然后编译项目,最后运行debug,发现提示缺少dll,最后,我们将SFML所有dll复制到项目的debug执行目录下就可以了