踩坑-CMake编译GLFW时 platform.c 发生 C1001:内部编译器错误

内容目录

查了一圈发现没有答案,果然还是踩坑体质触发了吗,那只能自己研究一下为什么了,报错:

 platform.c
D:\Project\SchEngine\Source\Render\ThirdParty\glfw-3.4\src\platform.c(63,26): warning C4034: sizeof 返回 0 [D:\Project\Sc
hEngine\Build\Source\Render\Render.vcxproj]
D:\Project\SchEngine\Source\Render\ThirdParty\glfw-3.4\src\platform.c(143,26): warning C4034: sizeof 返回 0 [D:\Project\S
chEngine\Build\Source\Render\Render.vcxproj]
  posix_module.c
  posix_poll.c
  posix_thread.c
  正在生成代码...
D:\Project\SchEngine\Source\Render\ThirdParty\glfw-3.4\src\platform.c : fatal  error C1001: 内部编译器错误。 [D:\Project\SchEng
ine\Build\Source\Render\Render.vcxproj]
  (编译器文件“D:\a\_work\1\s\src\vctools\Compiler\Utc\src\p2\main.c”,第 242 行)
   要解决此问题,请尝试简化或更改上面所列位置附近的程序。
  如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
  请选择 Visual C++
  “帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
  “D:\Software\VS2022\VC\Tools\MSVC\14.40.33807\bin\HostX64\x64\CL.exe”中的内部编译器错误
    请选择 Visual C++
  “帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息
    CL!RaiseException()+0x6c
    CL!RaiseException()+0x6c
    CL!InvokeCompilerPassW()+0x9077f
    CL!InvokeCompilerPassW()+0xfa5dd

经过我的一番查找,因为这是一个多平台的库,所以各种代码混杂在同一个文件夹之中,而我在 CMake 中将所有的文件都加到库里了,所以可能导致 MSVC 碰到了一些其他平台的代码导致无法解析从而发生错误。
解决方案也很简单,只需要将 GLFW 源码自带的 CMakeLists.txt 添加到子文件夹中即可,同时修改 CMake 删除 example 和 test 两个模块。

滚动至顶部