在 ac-docker win10 中编译时出现构建错误,要求重建已编译的标头,因为自预编译标头以来文件已被修改
Posted
技术标签:
【中文标题】在 ac-docker win10 中编译时出现构建错误,要求重建已编译的标头,因为自预编译标头以来文件已被修改【英文标题】:build errors when compiling in ac-docker win10 asking to rebuild compiled header since a file has been modified since the precompiled header 【发布时间】:2021-12-08 16:10:52 【问题描述】:这里是一些错误的副本,但在帖子中列出的错误可能很多,总共可能有 50 个相同的错误,只是文件名不同
fatal error: file '/azerothcore/src/server/game/Entities/GameObject/GameObject.h' has been modified since the precompiled header '/azerothcore/var/build/obj/src/server/game/CMakeFiles/game.dir/cmake_pch.hxx.pch' was built: size changed
note: please rebuild precompiled header '/azerothcore/var/build/obj/src/server/game/CMakeFiles/game.dir/cmake_pch.hxx.pch'
1 error generated.
make[2]: *** [src/server/game/CMakeFiles/game.dir/build.make:154: src/server/game/CMakeFiles/game.dir/AI/CoreAI/GuardAI.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
如何执行此步骤并在 ac 的 docker build 中重建我的预编译头文件?我的世界数据库也在不断膨胀,自从昨天最新的新版本从 2021 年 10 月 11 日提交以来,大量数据从 8gb 到 16gb 再到 28gb
【问题讨论】:
【参考方案1】:这可能是因为 ccache 的原因,它是允许您进行超快速编译的缓存,但有时由于大量更改导致头部缓存失败,必须清理它。
所以,请试试这个:
./acore.sh docker dev:dash compiler ccacheClean
它应该清理ccache,然后你可以重新开始编译
PS 关于数据库大小的问题与 mysql 的配置有关。 InnoDB 通常会存储大量需要清理的 Binglog。但请为此打开一个单独的问题。 AC 提供默认 MySQL 配置,系统管理员应根据需要对其进行调整
【讨论】:
所以,我在没有保存的世界数据库的情况下进行了擦除和全新安装,所以我只将 auth 和 char 数据库导入到我的构建中,直到今天 11 月才出现问题。第 6 次,当我执行 git pull 命令“更新”我的服务器时,过程完成,然后我执行了构建命令.....现在我有相同的 50+ 错误左右,要求重建预编译的头文件。我将上面的命令用于 ccacheClean,然后重新构建,但我仍然遇到相同的问题,这并没有解决构建错误,如要重建的预编译头文件所述。 这个错误与数据库无关,即100%与ccache和build文件夹有关。它们都在项目的 /var 文件夹下(但您需要访问 docker 控制台)。尝试同时运行ccacheClean
,然后运行compiler all
感谢您提供这些命令!我跑了两个,它解决了上面提到的所有问题。以零错误重建我的核心。运行服务器,一切似乎都按预期工作。【参考方案2】:
我能够解决我的问题的唯一方法是花费个人时间来创建如此多的自定义内容,结果却迷失了方向。我重建了一个干净的服务器,然后只导入了我的 AUTH 和 CHARACTER 数据库,问题就解决了。该构建 100% 可以按预期工作,但必须缓慢而痛苦地重做我在 WORLD 数据库中完成的所有自定义工作。
【讨论】:
这就是为什么我们建议您将所有自定义更改保存在 SQL 文件中的某个位置,以便您可以轻松地将它们重新应用到 AC clean world 数据库中。除了备份更改之外,这有几个好处。 另外,检查@Joseph 的答案应该可以解决原始问题以上是关于在 ac-docker win10 中编译时出现构建错误,要求重建已编译的标头,因为自预编译标头以来文件已被修改的主要内容,如果未能解决你的问题,请参考以下文章
使用 GetComputerObjectNameW win API 时出现编译错误
在 Visual Studio 中使用 XP 工具集编译时出现路径空间的 Windows XP 运行时问题