【CMake】windows平台cmake编译一个sfml项目

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执行目录下就可以了
在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值