ios - Xcode中opencascade库的IOS示例Lex编译错误
问题描述
我正在尝试在 MacOs 上构建 OPENCascade 库的 IOS 示例。使用了 Xcode 版本:10.2、10、3、11.1。现在我收到以下类型的错误:
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:60: bad character: =
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:60: bad character: =
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:60: bad character: =
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:60: bad character: =
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:60: bad character: =
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:60: bad character: =
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:60: bad character: =
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:60: bad character: =
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:62: name defined twice
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:63: bad character: {
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:65: bad character: }
../occt_lib/src/BRepFeat/BRepFeat_MakeCylindricalHole.lxx:66: premature EOF
flex: error deleting output file ../project.build/DerivedSources/BRepFeat_MakeCylindricalHole.yy.cxx
Command ../XcodeDefault.xctoolchain/usr/bin/lex failed with exit code 1
我认为可能的原因:
1)我没有项目中的所有文件(我已经检查过了,所以这不应该是原因)
2)Xcode没有以正确的方式处理.lxx文件.
解决方案
在 OCCT 文件名转换中,.lxx 是内联 C++ 头文件的扩展名,包含在同名的 .hxx 头文件中。BRepFeat包没有任何 .yacc/.lex 文件,因此BRepFeat_MakeCylindricalHole.yy.cxx根本不应该存在。
看起来问题出在生成 XCode 项目/Makefile 的构建例程(CMake 或 Tcl 脚本)中。从问题中不清楚是在构建 OCCT 本身(以及已采取哪些步骤)或在构建 iOS 示例(是 OCCT 附带的还是从头开始编写的?)时发生问题。
OCCT 的 CMake 构建可以通过以下交叉编译工具链和伪 bash 脚本进行配置: https ://github.com/leetal/ios-cmake
export IPHONEOS_DEPLOYMENT_TARGET=8.0
aFreeType=$HOME/freetype-2.7.1-ios
cmake -G "Unix Makefiles" \
-D CMAKE_TOOLCHAIN_FILE:FILEPATH="$HOME/ios-cmake.git/ios.toolchain.cmake" \
-D PLATFORM:STRING="OS64" \
-D ARCHS:STRING="arm64" \
-D IOS_DEPLOYMENT_TARGET:STRING="$IPHONEOS_DEPLOYMENT_TARGET" \
-D ENABLE_VISIBILITY:BOOL="TRUE" \
-D CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS:BOOL="OFF" \
-D CMAKE_CXX_USE_RESPONSE_FILE_FOR_OBJECTS:BOOL="OFF" \
-D CMAKE_BUILD_TYPE:STRING="Release" \
-D BUILD_LIBRARY_TYPE:STRING="Static" \
-D INSTALL_DIR:PATH="work/occt-ios-install" \
-D INSTALL_DIR_INCLUDE:STRING="inc" \
-D INSTALL_DIR_LIB:STRING="lib" \
-D INSTALL_DIR_RESOURCE:STRING="src" \
-D INSTALL_NAME_DIR:STRING="@executable_path/../Frameworks" \
-D 3RDPARTY_FREETYPE_DIR:PATH="$aFreeType" \
-D 3RDPARTY_FREETYPE_INCLUDE_DIR_freetype2:FILEPATH="$aFreeType/include" \
-D 3RDPARTY_FREETYPE_INCLUDE_DIR_ft2build:FILEPATH="$aFreeType/include" \
-D 3RDPARTY_FREETYPE_LIBRARY_DIR:PATH="$aFreeType/lib" \
-D USE_FREEIMAGE:BOOL="OFF" \
-D BUILD_MODULE_Draw:BOOL="OFF" \
"/Path/To/OcctSourceCode"
aNbJobs="$(getconf _NPROCESSORS_ONLN)"
make -j $aNbJobs
make install
推荐阅读
- r - 按组删除过去的观察到最接近给定日期的观察
- c# - 为什么 PEVerify 无法识别有效代码?
- python - Pycharm 不会通过 web2py 显示某些 .html 视图
- cmake - 在配置时将标头放入构建目录(符号链接)
- java - 如何根据 LocalTime 列表创建通知?
- azure - 单页应用程序的 Azure CDN Microsoft 标准规则引擎重写 URL
- python - 任务管理器不想在用户未登录时执行任务
- kubernetes - Ecplise hono 1.0.0 需要哪个 k8s 版本?
- .net - 如何从 WebView2 中的 ExecuteScript 获取同步返回
- android - 在片段中实例化 WorkManager 时 requireActivity() 或获取应用程序上下文