作者:Kenny Chu
主页:https://kennyangel.github.io/
编辑:20230913
上传:20230913
摘要:本文记录OCC程序的编译过程,源程序来源于官网,基于vs2022 + vc142 进行编译。
标签:OCC | Opencascade | C++编译 | 工业软件开发
参考资料:
OCC:OpenCascade
官网:Open CASCADE Technology | Collaborative development portal
下载页面:Download - Open CASCADE Technology
推荐下载下图所示文件,即win安装版程序,如果下载源码的话需要手动下载第三方依赖包。
下载完成后,自行安装opencascade-7.7.0-vc14-64.exe文件即可。安装完成后程序根目录如下图所示。根目录中"opencascade-7.7.0"为OCC程序路径,其余文件夹为第三方依赖包。
通过VS安装器实现VC生成工具安装,作者使用VS2022,默认的VC生成工具为 MSVC v143,通过搜索勾选MSVC v142,也可以勾选MSVC v140(vs2015),具体使用哪个版本可以在OCC编译时设置环境变量,详见第三节。
添加系统环境变量:DEvEnvDir,变量值为VS主程序启动路径,如:C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE
1)在 opencascade-7.7.0 路径中启动cmd控制台:
cd /d "E:\Programs\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0"
2)控制台输入 msvc.bat 启动 vs 打开OCC项目
关于 msvc.bat 的启动参数说明:
参数ID | 参数含义 | 参数可选值 |
---|---|---|
1 | 指定 MSVC 生成工具的版本 | vc10 / vc11 / vc12 / vc14 / vc141 / vc142 |
2 | 执行程序架构 | win32 / win64 |
3 | 编译方式 | debug / d / i / relwithdeb |
实际情况下,可在控制台输入 "msvc.bat vc142",参数1如果不指定的话会根据vs版本自动选择,参数2和参数3可以不指定。运行后,cmd会自动打开 vs 并加载项目文件:
"E:\Programs\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0\adm\msvc\vc142\OCCT.sln"
根据上一行路径也能发现,msvc 文件夹中会有多个 vc 版本对应的解决方案。
由于OCCT.sln中包含的项目很多,多数项目都会发生 include 导入头文件失败,手动一个一个项目修改属性不科学,因而可以通过 vs 中的 “属性管理器”进行VC++引用路径的添加。
打开属性管理器,任选一个项目,会出现 Debug、Release的选择,为了编译更快,此处选择 Release下的 Microsoft.Cpp.x64.user,双击打开属性页面。
如下所示,选择VC++中的“包含目录”,下拉打开编辑页面。
在包含目录编辑页面中,添加OCC的第三方依赖包所对应的 include 文件夹。
需注意的事,作者测试时vtk引用路径有误,因此 vtk 依赖同时指向了 include\vtk-6.1(见最后两行)
同样的方式在“库目录”中,添加第三方依赖。库目录需要指向 lib 文件夹。
库目录还需指定生成目录的 lib 文件夹,即:E:\Programs\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0\win64\vc14\lib
图中 $(OCC_Top_Root)为作者自定义变量,值为:E:\Programs\OpenCASCADE-7.7.0-vc14-64
附加包含目录与包含目录指向路径相同。
接下来就可以右键,重新生成解决方案啦,走到这里真心不容易😂😂😂
编译完成后,输出路径为:"E:\Programs\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0\win64"。
编译后的库文件:E:\Programs\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0\win64\vc14\bin
编译后的库文件可以加在系统变量 path 中,方便其他程序搜索。
进入工作目录:E:\Programs\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0\win64\vc14\bin
在该目录中,创建一个 "DRAWEXE_RUN.bat" 文件,内容如下:
x@echo off
set "ffmpeg=E:\Programs\OpenCASCADE-7.7.0-vc14-64\ffmpeg-3.3.4-64\bin"
set "freeimage=E:\Programs\OpenCASCADE-7.7.0-vc14-64\freeimage-3.17.0-vc14-64\bin"
set "freetype=E:\Programs\OpenCASCADE-7.7.0-vc14-64\freetype-2.5.5-vc14-64\bin"
set "openvr=E:\Programs\OpenCASCADE-7.7.0-vc14-64\openvr-1.14.15-64\bin\win64"
set "qt=E:\Programs\OpenCASCADE-7.7.0-vc14-64\qt5.11.2-vc14-64\bin"
set "tbb=E:\Programs\OpenCASCADE-7.7.0-vc14-64\tbb-2021.5-vc14-64\bin"
set "tcltk=E:\Programs\OpenCASCADE-7.7.0-vc14-64\tcltk-86-64\bin"
set "vtk=E:\Programs\OpenCASCADE-7.7.0-vc14-64\vtk-6.1.0-vc14-64\bin"
set path=%path%;%ffmpeg%;%freeimage%;%freetype%;%openvr%;%qt%;%tbb%;%tcltk%;%vtk%
call DRAWEXE.exe
pause
保存bat文件双击运行。
哇,真是喜大普奔啊~~😭😭