Cmake : /bigobj: 没有这样的文件或目录

Ext*_*ons 0 c++ cmake assimp

当我构建一个使用 Assimp 的应用程序时,出现错误

C:\Users\nitin\AppData\Local\Temp\ccA4Vs3q.s: Assembler messages:
C:\Users\nitin\AppData\Local\Temp\ccA4Vs3q.s: Fatal error: can't write 117 bytes to section .text of CMakeFiles\assimp.dir\AssetLib\IFC\IFCReaderGen1_2x3.cpp.obj because: 'File too big'
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/as.exe: CMakeFiles\assimp.dir\AssetLib\IFC\IFCReaderGen1_2x3.cpp.obj: too many sections (46774)
C:\Users\nitin\AppData\Local\Temp\ccA4Vs3q.s: Fatal error: can't close CMakeFiles\assimp.dir\AssetLib\IFC\IFCReaderGen1_2x3.cpp.obj: File too big
Nade\vendor\assimp\code\CMakeFiles\assimp.dir\build.make:1965: recipe for target 'Nade/vendor/assimp/code/CMakeFiles/assimp.dir/AssetLib/IFC/IFCReaderGen1_2x3.cpp.obj' failed
Run Code Online (Sandbox Code Playgroud)

于是就上网搜索解决方案,找到了一个解决方案,说需要设置/bigobjflag。

我正在使用 Cmake 和 Mingw32-make。

但是当我添加这样的定义时

set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} /bigobj)
Run Code Online (Sandbox Code Playgroud)

或者像这样

add_definitions(/bigobj)
Run Code Online (Sandbox Code Playgroud)

我收到错误

/bigobj: No such file or directory
Run Code Online (Sandbox Code Playgroud)

如何在解决“OBJ 文件太大”错误的同时解决此错误?

Lin*_*cer 7

/bigobj选项适用于 Microsoft Visual Studio 编译器。

对于 GCC,请尝试-Wa,-mbig-obj改为。

如果您想同时支持两者,请尝试:

if (MSVC)
  add_compile_options(/bigobj)
else ()
  add_compile_options(-Wa,-mbig-obj)
endif ()
Run Code Online (Sandbox Code Playgroud)

如果您只想直接指定单个目标:

target_compile_options(my_target_name PRIVATE /bigobj)
Run Code Online (Sandbox Code Playgroud)