Mac OSXでrapidjson0.11(http://code.google.com/p/rapidjson/ )のテストをビルドしようとしています。これには、gtest(正常にビルド)、unittest(ビルドが失敗)、perftest(ビルドが失敗)の3つのプロジェクトが含まれ、ビルド時にエラー1とエラー2でエラーが発生します。
コンパイラの出力には、unittestとperftestの両方で次のエラーが表示され、makeが失敗します。
../../include/rapidjson/reader.h: In function ‘const char* rapidjson::SkipWhitespace_SIMD(const char*)’:
../../include/rapidjson/reader.h:116: error: ‘_SIDD_UBYTE_OPS’ was not declared in this scope
../../include/rapidjson/reader.h:116: error: ‘_SIDD_CMP_EQUAL_ANY’ was not declared in this scope
../../include/rapidjson/reader.h:116: error: ‘_SIDD_BIT_MASK’ was not declared in this scope
../../include/rapidjson/reader.h:116: error: ‘_SIDD_NEGATIVE_POLARITY’ was not declared in this scope
これらのプリプロセッサ定数は、SSE4命令に関連しています。RapidjsonはSSE2またはSSE4.2を使用して速度を上げることができ、デフォルトではビルド時にSSE4.2を使用します。
makefileには、SSE4.2サポートを有効にするための-msse4.2コンパイラスイッチが含まれています。ヘッダーファイルを調べると、OS Xでは、SSE4_1とSSE4_2の両方のプリプロセッサ定数をSIDD ...定数として定義する必要があることがわかります。定義されています。何らかの理由で、これらのSIDD ...定数は定義されていません。
さらなる調査により、-msse4スイッチがSSE4.1とSSE4.2の両方のサポートを有効にすることがわかったので、スイッチを-msse4に変更しようとしましたが、それでもエラーが発生します。
-msse4.2スイッチがSSE4_2を自動的に定義するかどうかはわかりませんが、手動で定義しようとしましたが、うまくいきませんでした。
注:Macで自分でビルドしてみたい場合は、付属のpremakeスクリプトファイルが機能しないため、別のpremakeスクリプトファイルをダウンロードする必要があります。修正されたスクリプトは、こちらの2番目の投稿の添付ファイルからダウンロードできますhttps://code.google.com/p/rapidjson/issues/detail?id=54
OS Xで正常に構築する方法についてのアイデアはありますか?