ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

如何在 Windows 上用 MinGW-w64 构建并安装 SDL3 库

如何在 Windows 上用 MinGW-w64 构建并安装 SDL3 库 如何在 Windows 上用 MinGW-w64 构建并安装 SDL3 库【免费下载链接】SDLSimple DirectMedia Layer项目地址: https://gitcode.com/GitHub_Trending/sd/SDL如果你想在 Windows 上不依赖 Visual Studio而是用 MinGW-w64 工具链从源码构建 SDLSimple DirectMedia Layer3并把它安装成一个可以被自己项目通过 CMake 找到的库这篇文章给出的就是 README-windows.md 中记录的完整操作路径先安装 MSYS2 与 MinGW-w64 工具链再用 CMake Ninja 构建 SDL 并安装到指定目录最后把安装目录接入自己的 CMake 项目。文档中给出的最低已测试 MinGW-w64 版本是 8.0.3这条路径以构建 64 位x86_64二进制为前提。准备条件安装 MSYS2 与 MinGW-w64 工具链在 Windows 主机上首先安装并配置 MSYS2 环境它提供 MinGW-w64 工具链MSYS2 一般安装到C:\msys64。按 MSYS2 的说明使用 MinGW-w64 shell 更新 MSYS2 环境中的所有组件通常就是在 mingw64 shell 中运行pacman -Syuu这一步会更新 MSYS2 环境内的软件包属于对 MSYS2 自身环境的批量更新操作具体细节以 MSYS2 的文档为准。MSYS2 环境更新完成后在 mingw64 shell 中安装 x86_64 的 MinGW 工具链pacman -S mingw-w64-x86_64-toolchain如果还需要构建 32 位二进制可以额外安装mingw-w64-i686-toolchain。本文后续步骤均假设只构建 64 位二进制。安装 CMake、Ninja 和 Git。文档说明这些工具可以用 MSYS2 的pacman、winget、Chocolatey 或手动下载安装器等多种方式安装选择其中一种即可。构建并安装 SDL3用git克隆 SDL 源码到一个合适的位置然后从克隆仓库的根目录执行以下命令。文档说明这些命令可以在 PowerShell 或任意支持 CMake 的 IDE 中运行mkdir build cmake -S . -B build -G Ninja -DCMAKE_TOOLCHAIN_FILEbuild-scripts/cmake-toolchain-mingw64-x86_64.cmake cmake --build build --parallel cmake --install build --prefix C:/Libraries各命令的作用cmake -S . -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE...用 Ninja 生成器配置构建并通过-DCMAKE_TOOLCHAIN_FILE指定仓库自带的 cmake-toolchain-mingw64-x86_64.cmake该文件把 C/C/资源编译器分别指向x86_64-w64-mingw32-gcc、x86_64-w64-mingw32-g和x86_64-w64-mingw32-windres即windres。如果找不到这些编译器该文件会直接报FATAL_ERROR这通常意味着工具链没装好或 shell 不在 PATH 中。cmake --build build --parallel并行编译。cmake --install build --prefix C:/Libraries把 SDL 安装到C:\Libraries。--prefix可以改成你想安装的任何目录。确认安装结果并接入自己的项目安装完成后SDL 的头文件、库和 CMake 配置都位于你指定的 prefix下例为C:\Libraries。要让自己的项目找到这份 SDL需要让 CMake 的搜索路径包含它。文档给出的最直接方式是在配置时作为选项传入cmake .. -G Ninja -DCMAKE_PREFIX_PATHC:/Libraries同时你自己的项目也需要配置 CMake 使用 MinGW-w64 工具链来编译。文档给出的一个最小工具链文件示例set(CMAKE_SYSTEM_NAME Windows) set(CMAKE_SYSTEM_PROCESSOR x86_64) find_program(CMAKE_C_COMPILER NAMES x86_64-w64-mingw32-gcc REQUIRED) find_program(CMAKE_CXX_COMPILER NAMES x86_64-w64-mingw32-g REQUIRED) find_program(CMAKE_RC_COMPILER NAMES x86_64-w64-mingw32-windres windres REQUIRED)把这个文件保存到你的项目里配置时通过-DCMAKE_TOOLCHAIN_FILE引用它。一个链接系统 SDL 的最小CMakeLists.txt示例cmake_minimum_required(VERSION 3.15) project(mygame) find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3-shared) add_executable(mygame WIN32 mygame.c) target_link_libraries(mygame PRIVATE SDL3::SDL3) # On Windows, copy SDL3.dll to the build directory if(WIN32) add_custom_command( TARGET mygame POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $TARGET_FILE:SDL3::SDL3-shared $TARGET_FILE_DIR:mygame VERBATIM ) endif()这里有两个关键点find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3-shared)会在CMAKE_PREFIX_PATH指向的安装目录中查找 SDL3 的 shared 组件能找到并完成配置就说明安装结果是可用的。Windows 上运行时必须让程序能找到SDL3.dll上面的POST_BUILD命令会在构建后把SDL3.dll复制到mygame.exe所在的构建目录。这种用 CMake 生成器表达式复制动态库的写法在 README-cmake.md 的 “How do I copy a SDL3 dynamic library to another location?” 一节中有说明更多把 SDL 接入 CMake 项目的细节见该文档。限制与边界64 位与 32 位上面所有命令基于x86_64工具链。若要同时构建 32 位二进制需额外安装mingw-w64-i686-toolchain工具链文件也需相应换成 i686 版本仓库中提供了 cmake-toolchain-mingw64-i686.cmake。平台支持范围WinRT、Windows Phone 和 UWP 已不再受支持桌面版 Windows 一直支持到 Windows XP见 README-windows.md 开头说明。这条 MinGW-w64 路径与 Visual Studio 工程文件是两条独立的构建路线如果用 LLVM 系编译器如 Intel oneAPI C走 VS 工程文件路线还需要手动给SDL_audiocvt.c等源文件加-msse3选项而用 CMake 构建则可能不需要——本文使用的正是 CMake 路线。完成安装后按上面的最小示例项目配置并构建成功、SDL3.dll出现在构建目录中即代表这条 MinGW-w64 构建安装路径已经走通。【免费下载链接】SDLSimple DirectMedia Layer项目地址: https://gitcode.com/GitHub_Trending/sd/SDL创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进