SDL3 游戏开发 Windows 环境搭建

SDL3 游戏开发 Windows 环境搭建

    • 一、准备工作
      • 1.1 必备工具与库安装
        • 1.1.1 CMake
        • 1.1.2 MinGW-w64
        • 1.1.3 Ninja
        • 1.1.4 Git
        • 1.1.5 SDL3 及扩展库
        • 1.1.6 VSCode 及插件
    • 二、配置VSCode项目并验证环境
      • 2.1 创建测试源文件
      • 2.2 编写CMakeLists.txt文件和CMakePresets.json
        • 2.2.1 使用VSCode的CMake Quick Start
        • 2.2.2 手动编写CMakeLists.txt文件
        • 2.2.3 手动编写CMakePresets.json文件
      • 2.3 编译
      • 2.4 运行
      • 2.5 常见问题
    • 总结

一、准备工作

1.1 必备工具与库安装

1.1.1 CMake
  • 官网下载:访问 CMake 官方网站,根据操作系统选择相应版本进行下载。
  • 安装步骤
    • 运行安装程序,选择安装路径。
    • 在安装过程中,勾选 “Add CMake to the system PATH” 选项,确保 CMake 添加到系统路径。或者手动添加到系统环境变量 PATH 中。
    • 完成安装后,在终端中输入 cmake --version 验证安装是否成功。
1.1.2 MinGW-w64
  • 版本选择:MinGW 官网地址,MinGW-W64-builds,下载最新版本(x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev1)。
  • 安装步骤
    • 解压下载的文件到指定目录,例如 C:\mingw64
    • C:\mingw64\bin 添加到系统环境变量 PATH 中。
    • 在终端中输入 g++ --version 验证安装是否成功。
1.1.3 Ninja
  • 官网获取:访问 Ninja 官方网站,下载最新版本的 Ninja。
  • 安装步骤
    • 将下载的 Ninja 文件解压到指定目录,例如 C:\ninja
    • C:\ninja 添加到系统环境变量 PATH 中。
    • 在终端中输入 ninja --version 验证安装是否成功。
1.1.4 Git
  • 官网安装:访问 Git 官方网站,下载并安装官方版本。
  • 安装步骤
    • 运行安装程序,选择安装路径。
    • 在安装过程中,选择 “Use Git from the Windows Command Prompt” 选项,以便在终端中使用 Git。
    • 完成安装后,在终端中输入 git --version 验证安装是否成功。
1.1.5 SDL3 及扩展库
  • SDL3 下载:查看最新版本的SDL库:SDL。
  • 安装步骤
    • 方法一:下载源码编译:下载最新版本的源码压缩包,解压源码文件,使用 CMake 配置项目,运行编译命令,生成 SDL 库文件。
    • 方法二:下载 devel-vc 的压缩包解压:将下载的 SDL3 devel-vc 版本压缩包解压至 C:\myProjects\Library\SDL3
  • 注意
    • 头文件和库文件路径:在游戏项目中配置CMakeLists.txt时,确保正确指定SDL3的头文件(include)和库文件(lib)路径。如果使用find_package,则需要确保SDL3的cmake目录路径正确。
  • 扩展库安装:根据项目需求,选择安装 SDL_image,SDL_mixer,SDL_ttf 和 GLM。这些库可以从各自的官方网站或开源平台下载,并按照官方文档进行安装和配置。
1.1.6 VSCode 及插件
  • 安装 VSCode:访问 Visual Studio Code 官方网站,下载并安装最新版本。
  • 安装插件:打开 VSCode,点击左侧活动栏中的扩展视图,搜索并安装 “C/C++ Extension Pack”。
    • 在编译器下面状态栏显示CMake Status Bar:设置->cmake Status Bar->Visible。
    • 选择合适的编译器工具链:可以通过Ctrl + Shift + P调出命令面板,输入CMake: Select a Kit来选择合适的编译器工具链。

二、配置VSCode项目并验证环境

2.1 创建测试源文件

C:\myProjects\gameDamo 目录下创建 main.cpp 文件,编写一个简单的 SDL3 测试程序,用于验证环境配置是否正确。该程序将初始化 SDL、创建一个窗口,以确保 SDL3 库能够正常工作。

#include <SDL3/SDL.h>int main(int argc, char* argv[]) {// 初始化SDLif (SDL_Init(SDL_INIT_VIDEO) < 0) {SDL_Log("Unable to initialize SDL: %s", SDL_GetError());return -1;}// 创建窗口SDL_Window* window = SDL_CreateWindow("SDL3 Test", 640, 480, SDL_WINDOW_OPENGL);if (!window) {SDL_Log("Unable to create window: %s", SDL_GetError());SDL_Quit();return -1;}// 主循环bool running = true;while (running) {SDL_Event event;while (SDL_PollEvent(&event)) {if (event.type == SDL_EVENT_QUIT) {running = false;}}}// 释放资源SDL_DestroyWindow(window);SDL_Quit();return 0;
}

2.2 编写CMakeLists.txt文件和CMakePresets.json

2.2.1 使用VSCode的CMake Quick Start

VSCode的CMake Tools扩展提供了快速开始功能,可以自动生成CMakeLists.txtCMakePresets.json文件。通过以下步骤创建项目:

  1. 打开VSCode,进入项目目录C:\myProjects\gameDamo
  2. Ctrl + Shift + P,调出命令面板。
  3. 输入CMake: Quick Start,选择它。
  4. 按提示填写项目名称、语言等信息,VSCode将自动生成CMakeLists.txtCMakePresets.json文件。
2.2.2 手动编写CMakeLists.txt文件

VSCode的CMake Quick Start自动生成CMakeLists.txt文件,只是生成了一个默认的模板文件,需要手动编写CMakeLists.txt文件,指定SDL3的头文件、库文件路径和链接SDL3库:

cmake_minimum_required(VERSION 3.10.0)
project(gameDamo VERSION 0.1.0 LANGUAGES C CXX)# 指定SDL3的头文件路径
include_directories("C:\\myProjects\\Library\\SDL3\\include")
# 指定SDL3的库文件路径
link_directories("C:\\myProjects\\Library\\SDL3\\lib\\x64")# 添加可执行文件
add_executable(gameDamo main.cpp)# 链接SDL3库
target_link_libraries(gameDamo SDL3)

除了前面提到的写法,CMakeLists.txt也可以这样写,如果库里有cmake文件夹,使用find_package来指定路径和查找SDL3库:

cmake_minimum_required(VERSION 3.10.0)
project(gameDamo VERSION 0.1.0 LANGUAGES C CXX)# 设置SDL3的CMake模块路径
set(SDL3_DIR "C:/myProjects/Library/SDL3/cmake")
# 查找SDL3库
find_package(SDL3 REQUIRED)# 添加可执行文件
add_executable(gameDamo main.cpp)# 链接SDL3库
target_link_libraries(gameDamo SDL3::SDL3)
2.2.3 手动编写CMakePresets.json文件

VSCode的CMake Tools扩展会自动生成CMakePresets.json文件,其中定义了项目的构建配置。默认情况下,它会设置生成器、构建目录等参数。如果需要自定义配置,可以手动编辑该文件。

{"version": 8,"configurePresets": [{"name": "Configure preset using toolchain file","displayName": "Configure preset using toolchain file","description": "Sets Ninja generator, build and install directory","generator": "Ninja","binaryDir": "${sourceDir}/out/build/${presetName}","cacheVariables": {"CMAKE_BUILD_TYPE": "Debug","CMAKE_TOOLCHAIN_FILE": "","CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"}}]
}

2.3 编译

在VSCode中,可以通过CMake Status Bar直接编译项目。点击CMake Status Bar中的“Build”按钮,CMake Tools会自动根据CMakeLists.txtCMakePresets.json文件的配置进行构建。

2.4 运行

编译成功后,可以通过CMake Status Bar直接运行程序。点击“Run”按钮,VSCode会自动启动生成的可执行文件。
在这里插入图片描述

2.5 常见问题

  • VSCode不识别SDL头文件
    • 如果VSCode无法识别SDL.h,可以先按Ctrl + Shift + P调出面板,查找并点选“C/C++:选择IntelliSense配置”,然后选择“使用CMake Tools”。
    • 如果没有立刻生效,可以尝试刷新或重启VSCode。

总结

通过上述步骤,可以系统地完成SDL3游戏开发环境的搭建。从安装必备工具和库,到配置VSCode项目并验证环境,每一步都详细说明了操作方法和注意事项。这些步骤确保了开发环境的正确配置,为后续的游戏开发提供了坚实的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34977.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【sql靶场】第13、14、17关-post提交报错注入保姆级教程

目录 【sql靶场】第13、14、17关-post提交报错注入保姆级教程 1.知识回顾 1.报错注入深解 2.报错注入格式 3.使用的函数 4.URL 5.核心组成部分 6.数据编码规范 7.请求方法 2.第十三关 1.测试闭合 2.列数测试 3.测试回显 4.爆出数据库名 5.爆出表名 6.爆出字段 …

esxi,vcenter6.0安装指导

前言 esxi6.0安装和esxi6.7步骤基本一样&#xff0c;可参考vmware esxi vcenter6.7安装教程&#xff08;dell&#xff09; 环境依赖以及安装包 esxi6.0安装包vcenter6.0安装不同于6.7&#xff0c;6.5通过导入ova模版安装&#xff0c;需要安装在windows server 2008或者windo…

BigFoot Decursive lua

BigFoot Decursive lua 一键驱散脚本 国际化 ogg语音提示 初始化

2024山东大学计算机复试上机真题

2024山东大学计算机复试上机真题 2024山东大学计算机复试机试真题 历年山东大学计算机复试上机真题 历年山东大学计算机复试机试真题 在线评测&#xff1a;传动门&#xff1a;pgcode.cn 最长递减子序列 题目描述 输入数字 n&#xff0c;和 n 个整数&#xff0c;输出该数字…

【AI News | 20250316】每日AI进展

AI Repos 1、ReActMCP 将网络搜索能力集成到AI助手中的一个MCP服务&#xff1a;ReActMCP Web Search&#xff0c;相当于给AI装了个搜索引擎&#xff0c;可以实时查找最新的内容。它基于Exa API执行基本和高级网络搜索&#xff0c;高级搜索比如限制搜索的网站范围、指定日期范围…

【大模型实战篇】使用GPTQ量化QwQ-32B微调后的推理模型

1. 量化背景 之所以做量化&#xff0c;就是希望在现有的硬件条件下&#xff0c;提升性能。量化能将模型权重从高精度&#xff08;如FP32&#xff09;转换为低精度&#xff08;如INT8/FP16&#xff09;&#xff0c;内存占用可减少50%~75%。低精度运算&#xff08;如INT8&#xf…

Unity 笔记:在EditorWindow中绘制 Sorting Layer

在Unity开发过程中&#xff0c;可能会对旧资源进行批量修改&#xff0c;一个个手动修改费人费事&#xff0c;所以催生出了一堆批量工具。 分享一下在此过程中绘制 Sorting Layer 面板的代码脚本。 示意图&#xff1a; 在 EditorGUI 和 EditorGUILayer 中内置了 SortingLayerF…

idea更新git代码报错No Git Roots

idea更新git代码报错&#xff1a; No Git Roots None of configured Git roots are under Git. The configured directory must have ".git directory in it.但是本地项目里是存在.git文件的&#xff0c;就是突然间不能更新代码了 然后尝试重新拉新项目代码提示: Git i…

失败的面试经历(ʘ̥∧ʘ̥)

一.面向对象的三大特性 1.封装&#xff1a;将对象内部的属性私有化&#xff0c;外部对象不能够直接访问&#xff0c;但是可以提供一些可以使外部对象操作内部属性的方法。 2.继承&#xff1a;类与类之间会有一些相似之处&#xff0c;但也会有一些异处&#xff0c;使得他们与众…

qt加载VeloView工程

接上一篇点云软件配置与编译&#xff0c;使用qt加载需要先完成编译。编译完成后到编译目录下lidarview-superbuild\common-superbuild\lidarview\build 找到CmakeCache.txt&#xff0c;如下是我的编译目录。 使用QT6.5.3加载了CmakeCache.txt&#xff0c;QT5.14还加载不了cmake…

Windows Qt动态监测系统分辨率及缩放比变化

前言 Windows 显示设置中&#xff0c;可以修改缩放比&#xff0c;所有界面和文字会同比例放大或缩小&#xff0c;在开发桌面程序时&#xff0c; 实时监测Qt应用程序在不同缩放比例下的表现&#xff0c;可以及时调整程序界面以适应不同显示屏幕的需求。 正文 本文通过Qt相关…

CVE-2017-5645(使用 docker 搭建)

介绍: 是一个与 Apache Log4j2 相关的安全漏洞,属于远程代码执行,它可能允许攻击者通过构造恶意的日志信息 在目标系统上执行任意代码 Log4j2 介绍 Log4j2 是 Apache 的一个日志记录工具,属于 Java 应用的日志框架,它是 Log4j 的升级版,性能更好,功能更多.它被广泛的适用于 J…

交互式可视化进阶(Plotly Dash构建疫情仪表盘)

这里写目录标题 交互式可视化进阶(Plotly Dash构建疫情仪表盘)1. 引言2. 项目背景与意义3. 数据集生成与介绍4. GPU加速在数据处理中的应用5. 交互式仪表盘构建与Plotly Dash6. PyQt GUI集成与美化7. 工程整体架构8. 部分代码实现9. 代码自查与BUG排查10. 总结与展望交互式可…

RabbitMQ(补档)

RabbitMQ 是一个开源的消息队列软件&#xff08;有时也被称为消息代理&#xff09;&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。它主要用于应用程序之间&#xff0c;或者软件组件之间的消息通信。通过使用 RabbitMQ&#xff0c;可以实现异步的、可靠的…

平方矩阵问题

Ⅰ 回字形二维数组 #include <iostream> #include <iomanip> using namespace std; int main(){int n;while(cin>>n,n){for(int i0; i<n;i){for(int j0; j<n; j){int upi, downn-i1, leftj, rightn-j1;cout<<min(min(up,down),min(left,right)…

电子电气架构 --- 智能座舱和车载基础软件简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人生是一场骗局,最大的任务根本不是什么买车买房,也不是及时行乐,这就是欲望,不是理想,是把自己对生命的希望寄托在外物上,正确的做法应该是内…

Qt 通过MSVC编译运行项目

第一步下载Qt 把Qt能选的插件都选上&#xff0c;有的是连接数据库必须得插件&#xff0c;有的是做图表必须得插件&#xff0c;有的是运行MSVC必须得插件&#xff0c;能选尽量都选上。 第二步安装VS2017&#xff0c;当然我们安装2017的目的主要是用C的编译器&#xff0c;这里提…

高效手机检测:视觉分析技术的优势

在当今社会&#xff0c;手机已成为人们日常生活和工作中不可或缺的工具。然而&#xff0c;在某些特定场合&#xff0c;如考场、工作场所等&#xff0c;手机的使用却可能带来负面影响。因此&#xff0c;如何有效监测和防止在这些场合偷用手机的行为&#xff0c;成为了一个亟待解…

Gitee重新远程连接仓库(Linux)

Gitee重新远程连接仓库&#xff08;Linux&#xff09; 因为虚拟机重新安装了一回&#xff0c;所以需要重新和远程仓库连接&#xff0c;在网上找了很久没有找到相关操作&#xff0c;自己实操成功&#xff0c;记录下本博客&#xff0c;帮助有需要的人 确保新虚拟机安装Git 在新虚…