boost::serialization
私たちは一般的に と テンプレートを多用しています。すべてが順調に進んでいるようです。
ただし、Windows ビルドで問題が発生しました。オブジェクト ファイルが大きすぎるという問題が発生するようです。g++ 4.7.0 で MinGW/Msys を使用しています。
c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/as.exe: CMakeFiles/source.dir/sourcecode.cpp.obj: too many sections (33396)
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Assembler messages:
C:\Users\username\AppData\Local\Temp\ccnAocvD.s: Fatal error: can't write CMakeFiles/source.dir/sourcecode.cpp.obj: File too big
マスター グーグルは、このアーカイブ メッセージを明らかにしました。
その中で、別の人がほとんど同じ障害にぶつかったことを示しています。/bigobj
それは、必要なことを行うように見えるVisual Studio のオプションのオプションを指していました。ただし、Visual Studio に移行することはできません。
1 つの提案は、アセンブラ オプションに --hash-size を追加することでした。これは役に立ちませんでした。
私が間違っていなければ、問題はオブジェクト ファイルのエントリ数が 2^16 に制限されていることにあります。実際、エラー メッセージによると、これは署名付きの 2^16 エントリであると思いますが、それはピーナッツです。/bigobj
Visual Studioのオプションは、これを 2^32 に変更します。メーリング リストの結果は、GCC の同等のオプションを知りませんでした。さらなるグーグルの結果はこれに関連していないようです。
この時点で、この制限を回避するためにコードをリファクタリングする必要があります (うーん)。しかし、テンプレートを大量に使用すると、この問題が何度も発生する可能性があるのではないかと懸念しています (3 つのソース ファイルで既に発生しています)。
私の質問はこうです。/bigobj
Microsoft のオプションに相当する GCC はありますか? まだ見つかっていない 3 番目のオプションはありますか?