ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

VCMI从源码编译完整指南:CMake+Conan构建体系跨Windows、Linux、Android全流程

VCMI从源码编译完整指南:CMake+Conan构建体系跨Windows、Linux、Android全流程 VCMI从源码编译完整指南CMakeConan构建体系跨Windows、Linux、Android全流程【免费下载链接】vcmiOpen-source engine for Heroes of Might and Magic III项目地址: https://gitcode.com/gh_mirrors/vc/vcmiVCMI是《英雄无敌 III》的开源游戏引擎Open-source engine for Heroes of Might and Magic III支持在 Windows、Linux、macOS、Android、iOS 等平台上运行。本文是一份面向新手和开发者的从源码编译完整指南带你用CMake Conan构建体系完成跨Windows、Linux、Android三大平台的全流程编译从克隆仓库、安装依赖、生成工具链到产出可运行的VCMI_launcher客户端与 Android APK。 编译 VCMI 的前提你至少需要 CMake 3.21Android 构建建议 3.26、Git以及 C20 编译器Linux 上为 GCC 10 或 Clang 13Windows 上为 MSVC。一、先读懂 VCMI 的构建体系CMake Conan 如何分工在动手之前理解构建体系能帮你少走 90% 的弯路。VCMI 采用CMake 管构建、Conan 管依赖的两层架构组件角色关键入口文件CMake描述所有可编译目标客户端、服务器、启动器、地图编辑器、AI、Lobby 等CMakeLists.txtCMake Presets官方预置的一键配置方案覆盖 GCC/Clang/MSVC/Ninja/ccache 等组合CMakePresets.jsonConan 2统一拉取 Boost、SDL2、Qt、FFmpeg、TBB、LuaJIT 等第三方库conanfile.py根目录 CMakeLists.txt 通过option(...)暴露了 30 多个编译开关详见 docs/developers/CMake.md你完全不用死记默认值对开发已经足够好。根目录 conanfile.py 基于dependencies子模块中的配方生成CMakeToolchain让 CMake 自动找到 Conan 缓存里的库无需手动指定路径。CMakePresets.json 中内置了如linux-gcc-release、windows-msvc-release、android-conan-ninja-release等几十个 PresetCI 与开发者共用同一套配置这也是你照抄就能跑的底气所在。 核心思路一句话Conan 解决依赖从哪来CMake 解决怎么编译Presets 帮你把两者粘起来。二、通用准备克隆仓库与初始化 Conan三个平台通用的第一步只需做一次1. 克隆仓库必须带子模块dependencies配方在子模块里git clone --recursive https://gitcode.com/gh_mirrors/vc/vcmi.git vcmi cd vcmi如果已经克隆过但漏了子模块补一句即可git submodule update --init --recursive2. 初始化 Conanconan profile detect3. 还原官方预编译依赖推荐省去数小时编译从官方 vcmi-dependencies 发布页下载与你平台 架构匹配的.txz归档如dependencies-windows-x64.txz然后conan cache restore /path/to/dependencies-xxx.txz⚠️ 最常见的编译失败原因漏了子模块dependencies目录为空或依赖归档与架构不匹配。遇到conan install报找不到二进制包时可把--buildnever换成--buildmissing让 Conan 从源码补编缺失的包详见 docs/developers/Conan.md。三、Linux 从源码编译一条命令装依赖最快上手Linux 是 VCMI 测试最充分的平台官方基线要求Ubuntu 22.04支持 GCC 10 / Clang 13。第 1 步安装系统依赖Debian/Ubuntu 系一条apt命令即可装齐 CMake、SDL2 全家桶、Boost、Qt6、LuaJIT、ccache 等sudo apt-get install cmake g clang libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev \ libsdl2-mixer-dev zlib1g-dev libavformat-dev libswscale-dev libboost-dev \ libboost-filesystem-dev libboost-program-options-dev libboost-date-time-dev \ libboost-iostreams-dev qt6-base-dev qt6-base-dev-tools qt6-tools-dev \ qt6-tools-dev-tools qt6-l10n-tools qt6-svg-dev libtbb-dev libluajit-5.1-dev \ liblzma-dev libsqlite3-dev libminizip-dev libsquish-dev libfmt-dev ninja-build ccacheFedora 等 RPM 系发行版可参考 docs/developers/Building_Linux.md 中的yum install等价清单Nix 用户则可直接使用仓库提供的 nix/shell.nix 进入 nix-shell。第 2 步配置与编译CMake Preset 一键式cmake --preset linux-gcc-release cmake --build --preset linux-gcc-release不想用 Preset 也可以手写两行cmake -S . -B build -DENABLE_CCACHEON cmake --build build -j8✅ 编译产物位于build/bin/目录vcmiclient游戏客户端、vcmiserver专用服务器、vcmilauncher启动器以及libvcmi.so核心库。第 3 步准备游戏数据并运行VCMI 本身不含原版《英雄无敌 III》素材需要把正版游戏的Data、Maps、Mp3目录放入~/.local/share/vcmi/。仓库自带的数据构建脚本 vcmibuilder 可帮你从 GOG 离线安装包或 CD 镜像自动提取./vcmibuilder --gog ~/Downloads/homm3-setup-v1.2.0.376.exe四、Windows 从源码编译Visual Studio Conan 全流程Windows 官方推荐MSVC Conan 2组合CI 同款完整细节见 docs/developers/Building_Windows.md。第 1 步安装工具链通过 Visual Studio Installer 安装C 桌面开发工作负载并勾选MSVC 编译器、C CMake 工具、Git for Windows。再安装 Python 3 与 Conanpython -m pip install --upgrade conan conan profile detect强烈建议把ccache.exe加入PATH编译提速明显CMake 会自动为 VS 生成器创建编译器垫片见 CMakeLists.txt 中ENABLE_CCACHE分支。第 2 步还原依赖并生成 Conan 工具链下载dependencies-windows-x64.txz后执行在源码根目录conan cache restore %USERPROFILE%\Downloads\dependencies-windows-x64.txz conan install . --output-folderconan-msvc --buildnever --profiledependencies\conan_profiles\msvc-x64 -s :build_typeDebug第 3 步生成 Visual Studio 解决方案并编译cmake -S . -B build -G Visual Studio 17 2022 -A x64 --toolchain conan-msvc\conan_toolchain.cmake -D ENABLE_CCACHEON打开build\VCMI.sln选择 Debug/x64 编译ALL_BUILD即可纯命令行构建则执行cmake --build build --config Debug。产物在build\bin\Debug\直接运行VCMI_launcher.exe启动。 替代方案MSYS2 / MinGW不用 Conan如果你偏好 MinGW 环境在 UCRT64 shell 中用pacman安装 mingw-w64 系列开发包后两条 Preset 命令搞定cmake --preset windows-mingw-release cmake --build --preset windows-mingw-release运行提示把原版《英雄无敌 III》的Data、Maps、Mp3三个目录复制到%USERPROFILE%\Documents\My Games\vcmi\再启动VCMI_launcher.exe即可进入游戏。五、Android 从源码编译Conan 交叉编译 Gradle 打包 APKAndroid 构建是两步走CMake 先把 C 编译成共享库再由androiddeployqt自动编译 Java 层并打包 APK。官方文档见 docs/developers/Building_Android.md。环境要求CMake 3.26、JDK 17、Android SDK含 NDK r25c、Ninja建议、ccache建议。第 1 步配置 Gradle 与生成 Conan 工具链mkdir -p ~/.gradle echo android.bundle.enableUncompressedNativeLibstrue ~/.gradle/gradle.properties conan install . --output-folderconan-android64 --buildnever \ --profiledependencies/conan_profiles/android-64-ndk \ --profiledependencies/conan_profiles/base/android-system \ -c tools.android:ndk_path$ANDROID_HOME/ndk/r25c第 2 步配置、编译、产出 APKexport JAVA_HOME/path/to/jdk17 export ANDROID_HOME/path/to/android/sdk cmake --preset android-conan-ninja-release cmake --build --preset android-conan-ninja-releaseAPK 出现在build dir/android-build/vcmi-app/build/outputs/apk/下用adb install -r xxx.apk装到手机。 懒人方案Docker 一键环境仓库自带 Android 构建镜像定义 docker/BuildAndroid-aarch64.dockerfile内部预装 JDK 17、NDK、Conan 及全部依赖只需 Dockerdocker build -f docker/BuildAndroid-aarch64.dockerfile -t vcmi-android-build . docker run -it --rm -v $PWD/:/vcmi vcmi-android-build容器内会自动完成conan installcmake --preset android-daily-release的全流程。六、常用 CMake 选项速查表这些开关定义在 CMakeLists.txt 中配置时以-D选项值传入即可选项默认说明ENABLE_CCACHEOFF启用 ccache/sccache 编译缓存强烈建议开启重编译速度翻倍ENABLE_CLIENTON编译游戏客户端ENABLE_LAUNCHERON编译启动器需 QtENABLE_EDITORON编译地图编辑器ENABLE_SERVERON编译专用服务器ENABLE_VIDEOON用 FFmpeg 支持游戏内视频ENABLE_TESTOFF编译单元测试见 test/ENABLE_LOBBYOFF编译在线大厅服务器见 lobby/ENABLE_STATIC_LIBSOFF将 libvcmi 静态链接进可执行文件CMAKE_BUILD_TYPERelWithDebInfo可选 Debug / Release / RelWithDebInfo例如只要服务器、关掉客户端视频、开启测试cmake -S . -B build -DENABLE_CLIENTOFF -DENABLE_VIDEOOFF -DENABLE_TESTON七、常见编译问题排查清单症状原因与解法CMake 报找不到 Boost/SDL2 等未安装系统依赖或 Conan 工具链未传入检查--toolchain .../conan_toolchain.cmake是否生效conan install报无可用二进制包依赖归档与平台/编译器版本不匹配改用--buildmissing本地补编dependencies目录为空克隆时未带--recursive执行git submodule update --init --recursiveWindows 找不到 v142 工具集VS Installer 中补装MSVC v142 - VS 2019 C x64/x86 build toolsccache 未生效确认ccache --version可用后删除 build 目录重新配置并加-DENABLE_CCACHEON编译成功但进不了游戏缺少原版英雄无敌 III 的Data/Maps/Mp3数据目录Linux 放~/.local/share/vcmi/Windows 放Documents\My Games\vcmi\八、下一步继续深入完整 CMake 选项说明docs/developers/CMake.mdConan 依赖体系含预编译包矩阵与源码构建docs/developers/Conan.md各平台构建文档Building_Linux.md · Building_Windows.md · Building_Android.md代码结构与模块导航docs/developers/Code_Structure.md 恭喜当你看到vcmiclient或VCMI_launcher.exe出现在输出目录、手机装上自编译的 APK 时你就已经掌握了 VCMI 从源码编译的完整闭环——CMake 管构建、Conan 管依赖、Preset 一键直达从此跨平台开发畅通无阻。【免费下载链接】vcmiOpen-source engine for Heroes of Might and Magic III项目地址: https://gitcode.com/gh_mirrors/vc/vcmi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表