我试图在Mac OS X上构建rapidjson 0.11(http://code.google.com/p/rapidjson/)的测试。它包括三个项目:gtest(构建正常),unittest(构建失败)和perftest(构建失败),以及在构建出错时使用错误1和错误2。无法在Mac OS X上构建rapidjson测试
编译器输出显示以下错误unittest和perftest导致失败:
../../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。
生成文件包括-msse4.2编译器开关以启用SSE4.2支持,并通过寻找头文件揭示了在OS X,既SSE4_1和SSE4_2预处理器常数需要为被定义SIDD ...要定义的常量。由于某些原因,这些SIDD ...常量没有被定义。
进一步的研究表明,-msse4开关支持SSE4.1和SSE4.2,所以我试着将开关切换到-msse4,但仍然出错。
不知道如果-msse4.2开关自动定义SSE4_2,但我尝试手动定义它,并且没有运气。
注意:如果您想尝试在Mac上自己构建它,则需要下载不同的预制脚本文件,因为所包含的脚本文件不起作用。你可以在这里的第二篇文章中从附件下载修正的脚本https://code.google.com/p/rapidjson/issues/detail?id=54
关于如何在OS X上成功构建它的任何想法?