首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Cygwin构建Assimp

用Cygwin构建Assimp
EN

Stack Overflow用户
提问于 2021-01-05 19:33:21
回答 1查看 148关注 0票数 0

我想用cmake和cygwin来构建Assimp。

根据cmake文档,cmake有7个Makefile生成器:

代码语言:javascript
复制
Borland Makefiles
MSYS Makefiles
MinGW Makefiles
NMake Makefiles
NMake Makefiles JOM
Unix Makefiles
Watcom WMake

但是没有任何针对cygwin的Makefile生成器。

如何使用cygwin构建Assimp?

EN

回答 1

Stack Overflow用户

发布于 2021-01-06 16:33:02

在cygwin的基础上,strcasecmp上有一个问题

代码语言:javascript
复制
/pub/tmp/assimp-5.0.1/include/assimp/StringComparison.h:146:14: error: ‘::strcasecmp’ has not been declared; did you mean ‘strncmp’?
  146 |     return ::strcasecmp(s1,s2);
      |              ^~~~~~~~~~
      |              strncmp

https://pubs.opengroup.org/onlinepubs/9699919799/functions/strcasecmp.html

这是因为Cygwin仍然认为它是一个扩展

第二个问题来自复杂的C++模板

代码语言:javascript
复制
[ 37%] Building CXX object code/CMakeFiles/assimp.dir/Importer/IFC/IFCReaderGen1_2x3.cpp.o
/usr/lib/gcc/x86_64-pc-cygwin/10/../../../../x86_64-pc-cygwin/bin/as: CMakeFiles/assimp.dir/Importer/IFC/IFCReaderGen1_2x3.cpp.o: too many sections (88485)
/tmp/cc95KPdy.s: Assembler messages:
/tmp/cc95KPdy.s: Fatal error: can't write 180 bytes to section .text of CMakeFiles/assimp.dir/Importer/IFC/IFCReaderGen1_2x3.cpp.o: 'file too big'

我们可以从以下几个方面获取解决方案:

https://digitalkarabela.com/mingw-w64-how-to-fix-file-too-big-too-many-sections/

第三个问题是

代码语言:javascript
复制
/usr/lib/gcc/x86_64-pc-cygwin/10/../../../../x86_64-pc-cygwin/bin/as: CMakeFiles/assimp.dir/Importer/StepFile/StepFileGen1.cpp.o: section .xdata$_ZNSt11_Tuple_implILm1EJSt14default_deleteIN6Assimp8StepFile31draughting_callout_relationshipEEEE7_M_headERS5_: string table overflow at offset 10000005
/tmp/ccNl78l4.s: Assembler messages:
/tmp/ccNl78l4.s: Fatal error: can't close CMakeFiles/assimp.dir/Importer/StepFile/StepFileGen1.cpp.o: file too big

和使用-O1的建议

gcc string table overflow error during compilation

很管用。

通过所有这些,我们可以:

代码语言:javascript
复制
tar -xf assimp-5.0.1.tar.gz
cd assimp-5.0.1
cmake -DCMAKE_CXX_FLAGS="-D_GNU_SOURCE -Wa,-mbig-obj -O1" -DCMAKE_C_FLAGS="-D_GNU_SOURCE -Wa,-mbig-obj -O1" .
make

最后

代码语言:javascript
复制
....
[100%] Linking CXX executable ../bin/unit.exe
[100%] Built target unit
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65578068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档