最近在尝试自行编译aseprite时遇到一个很奇怪的编译错误,

编译失败

报错信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FAILED: third_party/json11/CMakeFiles/json11.dir/json11.cpp.obj
C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1432~1.313\bin\Hostx64\x64\cl.exe /nologo /TP -DCMARK_STATIC_DEFINE -DNDEBUG -DPNG_NO_MMX_CODE -D_CRT_SECURE_NO_WARNINGS -IC:\aseprite\third_party\zlib -IC:\aseprite\build\third_party\zlib -IC:\aseprite\third_party\libpng -IC:\aseprite\build\third_party\libpng -IC:\aseprite\third_party\libwebp\src -IC:\aseprite\third_party\tinyxml -IC:\aseprite\third_party\pixman\pixman -IC:\aseprite\build -IC:\aseprite\third_party\giflib -IC:\aseprite\third_party\jpeg -IC:\aseprite\third_party\curl\include -IC:\aseprite\third_party\simpleini -IC:\aseprite\third_party\. -IC:\aseprite\third_party\json11 /DWIN32 /D_WINDOWS /GR /EHsc /MT /Zi /O2 /Ob1 /D NDEBUG -MT -fPIC -fno-rtti -fno-exceptions -Wall /showIncludes /Fothird_party\json11\CMakeFiles\json11.dir\json11.cpp.obj /Fdthird_party\json11\CMakeFiles\json11.dir\json11.pdb /FS -c C:\aseprite\third_party\json11\json11.cpp
cl: 命令行 warning D9002 :忽略未知选项“-fPIC”
cl: 命令行 warning D9002 :忽略未知选项“-fno-rtti”
cl: 命令行 warning D9002 :忽略未知选项“-fno-exceptions”
C:\aseprite\third_party\json11\json11.cpp(171): warning C4626: “json11::Value<json11::Json::NUMBER,double>”: 已将对齐 运算符隐式定义为“已删除”
C:\aseprite\third_party\json11\json11.cpp(173): note: 查看对正在编译的 类 模板 实例化“json11::Value<json11::Json::NUMBER,double>”的引用
C:\aseprite\third_party\json11\json11.cpp(171): warning C5027: “json11::Value<json11::Json::NUMBER,double>”: 已将移动 赋值运算符隐式定义为“已删除”
C:\aseprite\third_party\json11\json11.cpp(180): warning C4626: “json11::JsonDouble”: 已将对齐运算符隐式定义为“已删除 ”
C:\aseprite\third_party\json11\json11.cpp(180): warning C5027: “json11::JsonDouble”: 已将移动赋值运算符隐式定义为“已 删除”
“C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1432~1.313\bin\Hostx64\x64\cl.exe”中的内部编译器错误
请选择 Visual C++
“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息
[637/1531] Building C object third_party\libarchive\libarc...archive_static.dir\archive_read_disk_entry_from_file.c.obj
ninja: build stopped: subcommand failed.

在网上找了半天也没有找到解决办法,最后在要提交issue时发现对方提示log需要使用English打印提交,于是我抱着最后一点希望在Visual Studio Installer内将语言改为英文后再次执行编译,这次就直接成功了… 挺魔幻的,也没在其他地方找到会因为语言包不同导致失败的发生

编译成功