【OCC学习11】OCC的WebAssembly编译

本文详细记录了如何使用emcc和cmake编译Open CASCADE Technology (OCC) 的过程,包括安装Emscripten SDK,配置FreeType,交叉编译OCC,并最终编译WebGL示例,以实现Web应用中的3D图形显示。
摘要由CSDN通过智能技术生成

记录OCC的webgl案例编译过程。整个编译借助emcc编译器,cmake生成nmake file,最后使用nmake编译。 

1. 安装Emscripten SDK。

        注意版本不要过高,3.1.10是可以的,新版本会报错。这是emcc的bug,估计未来版本会修复。

2. 编译FreeType。

       OCC 7.6版本虽然增加了编译选项USE_FREETYPE,选择是否使用Freetype。不过关闭该选项编译过程中会报错,虽然可以修改代码解决,还是建议开启FreeType。

      下载完Freetype源码后,用cmake-gui打开,先配置生成“NMake Makefiles”,选择指定交叉工具链,单击“Next”指定“emscripten/cmake/Modules/Platform/Emscripten.cmake”文件的位置。

 完成后进入CMake主界面,单击“Generate”即可生成NMake文件。进入编译目录,使用nmake编译即可。

3. OCC交叉编译。

      使用cmake-gui打开OCC7.6源码,与Freetype类似,配置生成“NMake Makefiles”,并选择指定交叉工具链。单击“Finish”进入CMake配置主界面。在这里有几个选项要改一下:

  1. 取消Draw编译,BUILD_MODULE_Draw
  2. 指定Freetype路径,3RDPARTY_FREETYPE_DIR
  3. 指定编译成静态库,BUILD_LIBRARY_TYPE改为Static

之后单击“Generate”生成nmake文件。打开cmd或git-bash,进入build目录,执行nmake即可编译OCC。编译成功后在lin32\clang\lib目录下会生成.a静态库文件。

 4. 编译OCC的webgl样例。

occ的这个webgl样例的CMake文件写的不好,可以先修改一下,直接指定freetype与occ的目录。更改部分参考如下:

# FreeType
# find_package(freetype REQUIRED NO_DEFAULT_PATH)
# if(freetype_FOUND)
#   message (STATUS "Using FreeType from \"${freetype_DIR}\"" )
# else()
#   message(WARNING "Could not find FreeType, please set freetype_DIR variable." )
# endif()

INCLUDE_DIRECTORIES(C:/workspace/occ_wasm/freetype-2.12.1/build/include)
LINK_DIRECTORIES(C:/workspace/occ_wasm/freetype-2.12.1/build)

# Open CASCADE Technology
# find_package(OpenCASCADE REQUIRED NO_DEFAULT_PATH)
# if(OpenCASCADE_FOUND)
#   message (STATUS "Using OpenCASCADE from \"${OpenCASCADE_DIR}\"" )
#   INCLUDE_DIRECTORIES(${OpenCASCADE_INCLUDE_DIR})
#   LINK_DIRECTORIES(${OpenCASCADE_LIBRARY_DIR})
# else()
#   message(WARNING "Could not find OpenCASCADE, please set OpenCASCADE_DIR variable." )
#   set(OCCT_LIBRARY_DIR)
#   set(OCCT_BIN_DIR)
# endif()

INCLUDE_DIRECTORIES(C:/workspace/occ_wasm/opencascade-7.6.0/inc)
LINK_DIRECTORIES(C:/workspace/occ_wasm/opencascade-7.6.0/build/lin32/clang/lib)

改完之后,直接用cmake-gui生成nmake file即可编译。编译完成用http-server启动http服务,在浏览器打开效果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值