新闻详情

新闻详情

首页 / 资讯中心 / 详情

AzerothCore-WoTLK 编译指南:CMake 参数配置带你 30 分钟构建游戏服务器

发布时间:2026/9/19 22:07:56来源:尧图网络
AzerothCore-WoTLK 编译指南:CMake 参数配置带你 30 分钟构建游戏服务器
AzerothCore-WoTLK 编译指南CMake 参数配置带你 30 分钟构建游戏服务器【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk第一次编译 AzerothCore-WoTLK 的人经常遇到两种情况cmake 明明一路绿灯可装完不知道二进制在哪或者 worlds 跑起来慢得怀疑人生。根子通常就在几个 CMake 参数配置上——构建类型、安装前缀、输出目录、编译缓存。这套流程我按项目里真实的配置文件逐段拆给你看配好后一条命令出全部产物日常增量编译能快一倍。 编译前环境与依赖检查动手之前先检查这几项缺了任何一条后面都会以更隐蔽的方式炸给你看编译器版本。项目在 src/cmake/compiler/gcc/settings.cmake 和 src/cmake/compiler/clang/settings.cmake 里做硬校验GCC 要求 8.0 以上、Clang 要求 10.0 以上MSVC 要求 2019 16.419.24以上低于这个版本直接 FATAL_ERROR 退出。系统里装了多个编译器时用-DCMAKE_C_COMPILER和-DCMAKE_CXX_COMPILER显式指定别赌默认的cc是哪个——src/cmake/platform/unix/settings.cmake 会自动检测编译器类型并加载对应的配置但你指定的版本如果太老检测通过也会在校验处挂掉。C 标准。这块你不用操心src/cmake/macros/ConfigureBaseTargets.cmake 里set(CMAKE_CXX_STANDARD 20)是项目自己钉死的CMAKE_CXX_STANDARD不需要你传。你要做的只是确认编译器版本够新、支持 C20GCC 8 起步、Clang 10 起步恰好都够。CMake 版本。根 CMakeLists.txt 声明的是cmake_minimum_required(VERSION 3.16...3.22)太新的 CMake 一般也兼容但 3.16 是底线。MySQL 开发库。配置阶段find_package(MySQL REQUIRED)没装 dev 包会直接失败这是新手最常见的报错之一。git。项目会取 revision hash 打进二进制不建议开-DWITHOUT_GIT——src/cmake/showoptions.cmake 里那段警告说得明白关了之后官方不支持你排查问题。ccache。可选但强烈建议后面单独讲。 CMake 完整编译命令逐段拆解假设你已经git clone https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk完成。一条可用的完整命令是这样# -DCMAKE_BUILD_TYPE: 优化级别与调试信息根 CMakeLists.txt 未设置时默认 RelWithDebInfo # -DCMAKE_INSTALL_PREFIX: make install 的安装位置也可用 -DPREFIX 等价传入 # -DCMAKE_C_COMPILER/-DCMAKE_CXX_COMPILER: 显式指定编译器避免自动检测踩坑 # -DCMAKE_CXX_COMPILER_LAUNCHER: 启用 ccache 编译缓存 cmake .. \ -DCMAKE_BUILD_TYPERelease \ -DCMAKE_INSTALL_PREFIX/opt/azerothcore \ -DCMAKE_C_COMPILERgcc \ -DCMAKE_CXX_COMPILERg \ -DCMAKE_CXX_COMPILER_LAUNCHERccache每个参数拆开说。CMAKE_BUILD_TYPE控制优化和调试信息。根 CMakeLists.txt 第 90 行附近可以看到你不设的话默认落到RelWithDebInfo——带优化又带调试符号开发和生产都算稳妥。选Release是性能拉满、不生成调试信息适合正式部署选Debug则是无优化全调试信息注意源码里通过AC_BUILD_TYPE宏能感知到构建类型某些检查行为会不同。选错不会编译失败但会选出一个跑起来不符合预期的二进制。CMAKE_INSTALL_PREFIX决定make install把东西放哪。项目还有个等价入口PREFIX在 src/cmake/platform/settings.cmake 里会直接赋给CMAKE_INSTALL_PREFIX。类 Unix 平台下配置文件默认装到prefix/etc、库装到prefix/lib见 src/cmake/platform/unix/settings.cmake二进制还会把 RPATH 指向prefix/lib所以前缀装错位置运行时就是找不到 so 的连环报错。建议永远显式指定别让它落到/usr/local这类共享路径。CMAKE_CXX_FLAGS我不建议手动传。项目的警告开关、调试开关都是通过acore-compile-option-interface这个接口库注入的WITH_WARNINGS、WITH_COREDEBUG对应-g3等标志你手动往 CMAKE_CXX_FLAGS 里塞东西容易和项目自己的标志打架。真有需要时用-DWITH_WARNINGS1这类官方选项。同理CMAKE_EXE_LINKER_FLAGS也不用碰动态链接时 Clang 会自动追加--no-undefined抓未定义符号MSVC 32 位会自动加/LARGEADDRESSAWARE都是各编译器 settings 文件里写好的。CMAKE_RUNTIME_OUTPUT_DIRECTORY是编译完去哪找文件的答案来源。Windows 平台的配置直接把它钉在${CMAKE_BINARY_DIR}/binsrc/cmake/compiler/msvc/settings.cmake 里能看到也就是说产物统一落在build/bin别满硬盘找。另外两个变量你不用设但要知道CMAKE_SOURCE_DIR指向源码根目录项目里大量路径引用靠它CMAKE_BINARY_DIR指向构建目录而且必须与源码分离——根 CMakeLists.txt 里CMAKE_DISABLE_SOURCE_CHANGES ON和CMAKE_DISABLE_IN_SOURCE_BUILD ON把 in-source build 直接堵死了在源码目录里跑cmake .会被拒绝。⚡ 进阶优化让编译快一倍如果你的机器跑过多次增量编译ccache 基本是必选项。项目对 ccache 有专门处理src/cmake/compiler/clang/settings.cmake 里有一段逻辑当USE_COREPCH/USE_SCRIPTPCH开启且 launcher 是 ccache 时自动追加-Xclang -fno-pch-timestamp并打印 Clang: disable pch timestamp when ccache and pch enabled——因为预编译头默认是打开的conf/dist/config.cmake 里两个 PCH 选项默认都是 1PCH 的时间戳校验会让 ccache 反复失效这行就是为了解决它。配合起来看这组带优化的完整流程# 独立构建目录产物与源码分离可随时删除重来 mkdir build cd build cmake .. \ -DCMAKE_BUILD_TYPERelWithDebInfo \ -DCMAKE_INSTALL_PREFIX/opt/azerothcore \ -DCMAKE_C_COMPILERclang \ -DCMAKE_CXX_COMPILERclang \ -DCMAKE_CXX_COMPILER_LAUNCHERccache make -j$(nproc)外部构建单独 build 目录 ccache 这两点组合的效果首编 ccache 冷启动意义不大但从第二次开始改一个脚本文件通常只重编那一两个目标增量时间能从分钟级压到秒级。PCH 本身也是提速项省掉大量重复头文件解析除非 ccache 在 GCC 下让你难受否则别关真要关-DNOPCH1一键禁用两个 PCH。❓ 常见编译问题速查QRelease 编译完成后找不到可执行文件产物统一在build/bin运行时输出目录被设为${CMAKE_BINARY_DIR}/bin或者执行make install装到你指定的CMAKE_INSTALL_PREFIX下。cmake 结束时 src/cmake/showoptions.cmake 会打印 Install core to ...那一行就是安装目的地回头看一眼就能省掉搜索时间。Qccache 与 PCH 冲突、命中率一直很低怎么办Clang 下项目已自动处理追加-Xclang -fno-pch-timestamp见上文 clang 配置。GCC 下如果 PCH 反复让你缓存失效用-DNOPCH1关掉 PCH或让 ccache 运行在预处理器模式。Qcmake 配置阶段直接报编译器版本错误对照硬校验GCC ≥ 8.0、Clang ≥ 10.0、MSVC ≥ 19.24。用-DCMAKE_C_COMPILER/-DCMAKE_CXX_COMPILER换到你想要的编译器换完记得删掉 build 目录重新配置——CMake 缓存不会跟着编译器走。Q能在源码目录里直接跑 cmake 吗不能。根 CMakeLists.txt 设了CMAKE_DISABLE_SOURCE_CHANGES ON和CMAKE_DISABLE_IN_SOURCE_BUILD ONin-source build 会被明确拒绝请始终使用外部构建目录。配好这些参数之后你的编译流程应该是独立 build 目录 一条带全参数的 cmake make -j$(nproc)make install到指定前缀日常开发则停留在 build 目录里反复make让 ccache 和 PCH 把增量编译的时间吃下去。【免费下载链接】azerothcore-wotlkComplete Open Source and Modular solution for MMO项目地址: https://gitcode.com/GitHub_Trending/az/azerothcore-wotlk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Claw 生态横评:OpenClaw 的多 Agent 协作,Base URL 填 TaoToken 2026/9/19 23:44:10

Claw 生态横评:OpenClaw 的多 Agent 协作,Base URL 填 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
写论文软件哪个好?我的答案和你的预期可能不太一样:先看“骨架”再看“皮囊” 2026/9/19 23:44:10

写论文软件哪个好?我的答案和你的预期可能不太一样:先看“骨架”再看“皮囊”

官网:www.shujiangce.com | 微信 公众号 :书匠策AI 一个被问了一百遍的问题 写论文软件哪个好? 做论文写作科普这几年,这个问题我至少被问过一百遍。每次我的回答都差不多:看阶段,看学科,…

阅读更多 →
Ubuntu 22.04 的 Codex 不走 QweApi,靠 TaoToken 行不行 2026/9/19 23:44:10

Ubuntu 22.04 的 Codex 不走 QweApi,靠 TaoToken 行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Krokiet 免费磁盘清理工具完全指南:内容哈希找出重复文件,几分钟释放几十 GB 2026/9/19 23:44:10

Krokiet 免费磁盘清理工具完全指南:内容哈希找出重复文件,几分钟释放几十 GB

Krokiet 免费磁盘清理工具完全指南:内容哈希找出重复文件,几分钟释放几十 GB 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 磁盘红了却找不到&quo…

阅读更多 →
aigcbiye:当论文写作从“人找工具“变成“工具找人“ 2026/9/19 23:44:10

aigcbiye:当论文写作从“人找工具“变成“工具找人“

aigcbiye官网www.aigcbiye.com 微信公众号搜一搜 aigcbiye 一个被忽略的事实:论文写作从来不是"写"的问题 如果你问一个刚完成答辩的研究生,论文写作中最耗时的环节是什么,答案大概率不会是"写"本身。开题时找不到方向…

阅读更多 →
Chatflow 要调图表MCP服务,Dify 的模型通道先改到 TaoToken 2026/9/19 23:41:10

Chatflow 要调图表MCP服务,Dify 的模型通道先改到 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞