ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

openage 在 Windows/MSVC 上的完整构建指南:从依赖安装到打包发布

openage 在 Windows/MSVC 上的完整构建指南:从依赖安装到打包发布 游戏开发图形学【免费下载链接】openageClone of the Age of Empires II engine 项目地址https://gitcode.com/gh_mirrors/op/openage点击查看免费下载本指南以 openage 仓库中的 doc/build_instructions/windows_msvc.md 为核心系统梳理在 Microsoft Windowsx64/x86下使用 Visual Studio MSVC 工具链编译 openage 的完整流程。由于 Windows 没有原生包管理器openage 采用「手动安装工具链 pip 安装 Python 依赖 vcpkg 安装 C/C 库」的混合方式本文从零开始覆盖环境搭建、配置、编译、开发模式运行以及 NSIS 安装包/便携版 7z 的打包发布并结合仓库中的构建脚本buildsystem/scripts/EmbedWinDependencies.cmake、packaging/CMakeLists.txt 等解释每一步背后的实现原理。读完本文你将能够在 Windows 上独立完成 openage 的构建、调试与交付。1. 准备工作理解 openage 的构建架构openage 是一个开源的《帝国时代 II》引擎克隆项目。从构建角度看它由两大部分组成详见 doc/building.mdlibopenage纯 C 核心库负责渲染、音频、事件系统、路径寻路等引擎底层openagePython 包提供游戏逻辑、转换器、测试等上层功能其中部分模块通过 Cython 编译为 C 扩展与 C 库互操作。整个项目统一使用CMake驱动构建仓库还提供了一个可选的configure包装脚本Windows 上直接使用原生 CMake 命令即可。构建过程涉及 Cython 扩展编译、代码生成等环节因此对工具链的版本与位数32/64 位要求严格。关键前提位数必须全程一致。如果打算构建 64 位x64版本那么 Python、vcpkg 库以及 CMake 生成的 Visual Studio 工程都必须是 x64反之亦然。混用位数是 Windows 构建最常见的失败原因。2. 安装构建工具链手动安装部分Windows 没有统一的包管理器因此以下三个工具需要手动下载安装。如果你已装有最新稳定版本可以跳过对应步骤。2.1 Visual Studio Build Tools下载并安装Visual Studio Build Toolsvs_BuildTools.exe勾选「Visual C Buildtools」工作负载。这是 MSVC 编译器、头文件与链接器的来源。若你希望获得 IDE 开发体验openage 文档也提供了多种 IDE 的使用指引可参考 doc/ide/README.md其中包含 Qt Creator、VSCode、Emacs 等环境的配置建议。2.2 Python 3从 Python 官网下载 Windows 安装包安装Python 3安装时需要开启以下选项pip后续依赖均通过pip安装Precompile standard library预编译标准库Download debug binaries下载调试二进制。如果安装时遗漏可重新运行安装程序并选择Modify补齐。位数要求构建 x64 版 openage 必须使用 64 位 Python反之亦然。2.3 CMake安装CMake仓库要求版本 3.16见 doc/building.md 的依赖清单。CMake 将生成 Visual Studio 工程文件并驱动整个构建。2.4 nyan 的 Windows 依赖openage 依赖引擎配置语言nyan见 doc/building.md 中 nyan installation 一节。在 Windows 上构建 nyan 主要需要flexwin_flex/win_bison即win_flex.exe。nyan 可以通过两种方式提供手动克隆 nyan 仓库并按其 Windows 构建说明编译CMake 会通过用户包注册表~/.cmake/packages/nyan/自动发现让 openage 自动下载并构建 nyan在 CMake 配置阶段传入-DDOWNLOAD_NYANYES与-DFLEX_EXECUTABLEpath to win_flex.exe详见下文第 5 节。3. 安装 Python 模块在Python 3 installation directory\Scripts目录下打开命令行执行pip install cython numpy lz4 toml pillow pygments pyreadline3 mako各模块在 openage 构建体系中的用途可对照 doc/building.md 的依赖表模块用途cython将.pyx源码编译为 C/C 扩展构建期必需要求 3.0.10 或指定旧版本区间numpy资源转换A与部分数值计算lz4资源解压/压缩A资产转换期使用toml解析.toml格式的转换器配置ApillowPython Imaging Library图像处理Apygments代码/日志高亮显示pyreadline3Windows 下的交互式命令行增强readline 替代mako模板引擎参与代码生成C构建期必需注意事项请确保你安装这些模块所针对的 Python 实例正是 CMD 中python命令实际指向的那个实例同时确保python与python3两个命令指向同一个且相同版本的 Python 3避免 CMake/Cython 探测到不一致的解释器。4. 通过 vcpkg 安装 C/C 依赖vcpkg 是微软开源的 C/C 包管理器openage 在 Windows 上用它集中管理原生库依赖。首先按 vcpkg 官方快速入门完成 vcpkg 本身的搭建然后在vcpkg directory下打开命令行执行vcpkg install dirent eigen3 fontconfig freetype harfbuzz libepoxy libogg libpng opus opusfile qtbase qtdeclarative qtmultimedia toml11这些包与 openage 依赖表的对应关系eigen3线性代数库CR3freetype / harfbuzz / fontconfig字体渲染与字体配置CRlibepoxyOpenGL 函数指针加载库CROpenGL 3.3 由它承载libpngPNG 图像解码CRlibogg / opus / opusfile音频解码与播放CRAqtbase / qtdeclarative / qtmultimediaQt66.2的 Core、Quick、QuickControls、Multimedia 模块用于 QML 图形界面CRtoml11C 侧的 TOML 配置解析CRdirentWindows 上提供 POSIX 风格目录遍历接口openage 在 Windows 下适配所用。如果还需要Vulkan 图形支持可选依赖见 doc/building.md 中标记O的 vulkan追加执行vcpkg install vulkan关于 Qt 的两种方案vcpkg 的qt端口已拆分为多个包编译时间已可接受若你更希望使用Qt 官方预编译版本可以跳过上述qt*包改用 Qt 官方在线安装器并在后续 CMake 配置命令中附加-DCMAKE_PREFIX_PATHQT6 directory。关于 x64 库构建 64 位版本时vcpkg 默认的 triplet 是 x8632 位必须让 vcpkg 编译 64 位库。两种做法任选其一在上述安装命令后追加--triplet x64-windows或设置环境变量VCPKG_DEFAULT_TRIPLETx64-windows。该 triplet 会直接决定后续 CMake 从installed\triplet\bin、installed\triplet\tools等目录取用库文件务必与目标架构一致。5. 配置并构建 openage当前 openage 尚不支持完全脱离源码目录的 out-of-source 构建但官方流程仍然使用独立的build目录来存放编译产物。在openage directory下打开命令行mkdir build cd build cmake -DCMAKE_TOOLCHAIN_FILEvcpkg directory\scripts\buildsystems\vcpkg.cmake .. cmake --build . --config RelWithDebInfo -- /nologo /m /v:m各参数含义-DCMAKE_TOOLCHAIN_FILE...\vcpkg.cmake告知 CMake 通过 vcpkg 工具链文件解析依赖构建系统会据此定位installed目录--config RelWithDebInfo选择 Release 带调试信息的配置构建脚本与打包脚本默认都以该配置为准/nologo /m /v:mMSBuild 参数——隐藏横幅、多进程并行编译、中等详细度输出。5.1 架构与生成器选项如果构建 x64 版本需要在第一条 cmake 命令中显式指定生成器与架构以 VS2022 为例cmake -G Visual Studio 17 2022 -A x64 -DCMAKE_TOOLCHAIN_FILEvcpkg directory\scripts\buildsystems\vcpkg.cmake ..-A x64与上文中 Python 位数、vcpkg 的x64-windowstriplet 必须三处一致。5.2 自动下载 nyan若希望 CMake 自动下载并构建 nyan则在第一条 cmake 命令中追加-DDOWNLOAD_NYANYES -DFLEX_EXECUTABLEpath to win_flex.exe这对应 doc/building.md 中描述的-DDOWNLOAD_NYANYES机制openage 会自动获取 nyan 源码、使用win_flex.exe生成词法分析器并完成编译从而省去手动克隆 nyan 仓库的步骤。5.3 构建产物结构构建完成后核心产物包括openage directory\build\libopenage\config built\openage.dllC 核心库的 DLLopenage directory\build\run.exe游戏启动器可执行文件nyan.dllnyan 库其位置取决于你获取 nyan 的方式手动构建的安装目录或自动下载的构建目录。6. 在开发模式devmode下运行 openageWindows 上运行 openage 比其他平台多出若干环境准备步骤逐项说明如下。6.1 安装 DejaVu Serif 字体openage 需要DejaVu Book Font系列中的 Serif 字体渲染界面文字下载并解压最新的dejaVu-fonts-ttf压缩包选中其中全部ttf\DejaVuSerif*.ttf文件右键选择「为所有用户安装」需要管理员权限。6.2 配置 fontconfig安装字体后还需让 fontconfig 找到字体配置将环境变量FONTCONFIG_PATH设置为vcpkg directory\installed\relevant config\tools\fontconfig\fonts\或vcpkg directory\installed\relevant config\etc\fonts\relevant config即目标 triplet如x64-windows将fontconfig\57-dejavu-serif.conf复制到%FONTCONFIG_PATH%\conf.d目录下。从源码看vcpkg 安装的 fontconfig 字体目录会被构建系统直接复用在 buildsystem/scripts/EmbedWinDependencies.cmake 中打包阶段会把vcpkg_dir/tools/fontconfig/fonts整体复制到 Python 安装前缀目录保证运行时字体配置可用。6.3 可选设置 AGE2DIR设置环境变量AGE2DIR指向《帝国时代 II》的安装目录。openage 需要原始游戏资产才能进行资源转换与运行AGE2DIR用于帮助它定位这些资产。6.4 设置 QML2_IMPORT_PATHopenage 的图形界面基于 Qt6 QML界面定义见 assets/qml如main.qml、IngameHud.qml等。需要让 Qt 的 QML 导入系统找到模块路径vcpkg 安装 Qt 时vcpkg directory\installed\relevant config\qml预编译 Qt 时qt directory\qt-version\compiler-version\qml。6.5 确认运行时 DLLopenage 运行需要以下 DLLopenage.dll通常位于openage directory\build\libopenage\config builtnyan.dll位置取决于获取 nyan 的方式vcpkg 依赖库的 DLL正常情况下构建过程会自动将它们复制到openage directory\build\libopenage\config built若未自动复制可到vcpkg directory\installed\relevant config\bin手工拷贝若使用了 Qt 官方预编译版Qt6 的 DLL 位于QT6 directory\bin。底层机制DLL 的自动收集由 buildsystem/scripts/EmbedWinDependencies.cmake 完成。该脚本调用dumpbin /DEPENDENTS递归解析每个二进制文件的依赖 DLL从vcpkg_dir/bin复制缺失项见 L21-L42同时针对 Qt还会调用windeployqt部署 QML 插件与库见 L45-L65并调用 vcpkg 的applocal.ps1做应用本地化拷贝。因此大多数情况下你无需手动处理 DLL。6.6 启动游戏完成上述准备后在openage directory\build\下打开一个 CMD 窗口首次运行执行python -m openage main这会完成资源转换等初始化流程并进入游戏主界面之后每次启动直接执行openage directory\build\run.exe打包安装场景下buildsystem/templates/openage.bat.in 提供了等价入口它设置PATH、XDG_DATA_HOME后调用python.exe -m openage而 buildsystem/templates/qt.conf 则在打包时被复制到 Python 目录将 Qt 插件与 QML 导入路径指向..\bin\plugins与..\bin\qml。7. 打包发布生成 NSIS 安装包与便携 7zopenage 的 Windows 打包由 CPack 驱动支持两种产物NSIS 安装包openage-version-arch-installer.exe与便携 7z 压缩包openage-version-arch-portable.7z生成器配置见 packaging/CMakeLists.txt。7.1 安装 NSIS安装NSISNullsoft Scriptable Install System它是 CPack 的 NSIS 生成器所依赖的外部程序。7.2 按 Qt 来源调整 windeployqt 开关根据 Qt 的获取方式编辑openage-repo-dir\buildsystem\templates\ForwardVariables.cmake.in中的一行# Use windeploy for packaging qt-prebuilt, standard value 1 for windeploy, 0 for vcpkg set(use_windeployqt 1)使用Qt 预编译版保持1构建系统将调用windeployqt部署 Qt 运行库见 EmbedWinDependencies.cmake 中if(use_windeployqt AND windeployqt)分支使用vcpkg 安装的 Qt改为0此时 DLL 收集完全依赖dumpbin递归解析与applocal.ps1见 EmbedWinDependencies.cmake。该文件由 packaging/CMakeLists.txt 在配置期通过configure_file生成并注册为安装脚本因此修改后需要重新运行 CMake 配置。7.3 执行打包在openage directory\build下打开命令行或沿用构建步骤中的窗口cpack -C RelWithDebInfo打包会比较耗时追加-V可输出详细日志便于观察各依赖的收集过程安装包文件名为openage-version-arch.exe其中arch由环境变量TARGET_PLATFORM控制例如amd64、x86见 packaging/CPackOptions.cmake若设置了环境变量IS_NIGHTLY文件名中会追加_NIGHTLY后缀并采用完整版本字符串见 CPackOptions.cmakeNSIS 相关行为包名、卸载前先卸载旧版、修改 PATH 策略等同样定义在 CPackOptions.cmake 中可在打包前按需调整。8. 常见问题与排查结合 doc/building.md 的 Troubleshooting 部分Windows 构建中常见的问题包括CMake 找不到 Qt/Python 等组件在 build 目录运行cmake-gui或ccmake查看并修正缓存变量也可显式传入-DPython3_EXECUTABLE...、-DCMAKE_PREFIX_PATH...等提示路径头文件缺失报错确认对应库的完整版本含头文件已通过 vcpkg 安装且 triplet 与目标架构一致构建目录与编译器定义冲突CMake 初始化 build 目录后再传入编译器相关变量会产生unable to execute ... clang之类的错误此时应清空 build 目录重新配置DLL 找不到导致运行失败先检查build\libopenage\config\是否已有完整 DLL若没有对照第 6.5 节从vcpkg directory\installed\triplet\bin手工补齐并确认QML2_IMPORT_PATH、FONTCONFIG_PATH均已正确设置。9. 小结至此一条完整的 Windows/MSVC 构建链路已经清晰手动安装 Visual Studio Build Tools、Python 3、CMake → 用 pip 安装 Python 依赖 → 用 vcpkg 安装原生库注意 triplet 与位数→ 通过 vcpkg 工具链文件配置并编译 → 配置字体、fontconfig、QML 路径后以 devmode 运行 → 用 CPack/NSIS 产出安装包或便携包。每一步背后doc/building.md 的依赖清单、buildsystem/scripts/EmbedWinDependencies.cmake 的 DLL 处理逻辑与 packaging/CPackOptions.cmake 的打包参数共同构成了可验证的依据。如果你只想体验 openage 而非从源码构建建议优先使用官方发布的预编译安装包本文面向的是希望参与开发、调试或自行定制构建的开发者。赞分享游戏开发图形学【免费下载链接】openageClone of the Age of Empires II engine 项目地址https://gitcode.com/gh_mirrors/op/openage点击查看免费下载相关推荐Anubis 本地开发完全指南从依赖安装到打包发布Anubis 本地开发完全指南从依赖安装到打包发布 Anubis 是一个用 Go 编写、用于拦截 AI 爬虫的 HTTP 反向代理通过工作量证明挑战来称量后端网络安全openage 在 Ubuntu 上从源码构建依赖安装全指南22.04 / 23.04 / 24.04 与 Linux Mintopenage 在 Ubuntu 上从源码构建依赖安装全指南22.04 / 23.04 / 24.04 与 Linux Mint 本篇指南围绕 opena游戏开发图形学openage 在 Fedora 上的编译指南dnf 依赖安装与 CMake 构建全流程openage 在 Fedora 上的编译指南dnf 依赖安装与 CMake 构建全流程 本篇指南面向 Fedora34 及更高版本用户完整讲解如何在游戏开发图形学上一篇从文本到歌声Amphion全流程音频生成工具链实战指南下一篇Ubicloud网络性能测试带宽与延迟优化实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表