Windows11+VS2022+OCCT7.6.0安装配置记录
- 工具及源码准备
- VS2022以及CMake
- 下载OCCT源码
- 下载第三方库
- CMake
- 修改occt_toolkit.cmake
- 进行CMake
- Visual Studio环境配置
- 配置包含目录
- 配置库目录
- 配置链接器
- 设置系统环境变量
- 配置项目调试环境
- 环境测试
- 其他方法
主要参考此文,在Window11下结合 VS2022安装Open CASCADE Technology 7.6.0环境。
工具及源码准备
VS2022以及CMake
已有相关环境,略。
(CMake版本需要大于2.8,我使用的3.23)
下载OCCT源码
在这里我下载的是7.6.0
https://dev.opencascade.org/release/previous#node-83367
注意下载的时候要求登录账号,可以使用google或github账号登录注册。
解压到自定目录(切记,该目录不能包含中文和空格),并在同级目录下新建一个products文件夹(以及一个build文件夹和一个OCCT安装目录,这两个也可 暂时不建立)
下载第三方库
注意:可以通过安装的方式安装所有第三方库。
进入网页,会提示登录账号,点击 3rd party components
再点击Windows (win32)
依次点击如下三个第三方库进行下载
解压后放在products下
CMake
正式cmake之前对以下文件做一下改动。
修改occt_toolkit.cmake
opencascade-7.6.0\adm\cmake\occt_toolkit.cmake
首行新增
cmake_policy(SET CMP0054 NEW)
如:
进行CMake
先进行如下四步基本配置:
3RDPARTY_DIR输入D:\ProgramData\opencascade-7.6.0\opencascade-7.6.0\prducts,点击Configure
这时Configure就可以成功了,在这里再把INSTALL_DIR切换为自定的目录,重新Configure
点击Generate,完成后,点击Open Project
自动打开Visual Studio,先将平台切换为Release x64,右键解决方案,生成解决方案开始构建。
这里将平台切换为Release x64是因为个人需要,也可以不切换。默认Debug x64平台
然后右键解决方案管理器中的INSTALL,点击生成,执行make install。这样把编译好的文件安装到设置的install目录
验证一下
右键DRAWEXE下拉菜单设为启动项目,然后CTRL+F5执行,在打开的命令行窗口中即可测试DRAWEXE命令。
在打开的终端中输入以下命令绘制测试图像
或者运行自带demo
以上安装的是Release x64版本,切换平台Debug x64,重复以上操作,可以安装Debug x64版本。
Visual Studio环境配置
以Release x64为例,配置 Visual Studio项目环境。
创建一个新项目OCCT_test,设置平台为Release x64,打开属性管理器,新建属性表,命名为 OCCT7.6.0_Release_x64.props。
配置包含目录
D:\ProgramData\opencascade-7.6.0\OCCT\inc
D:\ProgramData\opencascade-7.6.0\products\freeimage-3.17.0-vc14-64\include
D:\ProgramData\opencascade-7.6.0\products\freetype-2.5.5-vc14-64\include
D:\ProgramData\opencascade-7.6.0\products\tcltk-86-64\include
配置库目录
D:\ProgramData\opencascade-7.6.0\OCCT\win64\vc14\lib
D:\ProgramData\opencascade-7.6.0\products\freeimage-3.17.0-vc14-64\lib
D:\ProgramData\opencascade-7.6.0\products\freetype-2.5.5-vc14-64\lib
D:\ProgramData\opencascade-7.6.0\products\tcltk-86-64\lib
配置链接器
这里需要对相关目录下的lib进行提取,Release和Debug所需的lib不一样,注意,一般开源库下面的lib目录下同时包含Debug(**d.lib)和Release(*.lib)两类lib文件,但是OCCT不一样,可以看到我们install的时候生成的文件夹就自动区分了。所以该lib下全是Release相关的lib。
可以用之前我写的简单小脚本的基础上修改一下来提取lib。修改后代码如下
import os
def Extract_lib(path):
release = open("ooct_release_lib.txt", 'w')
for file in os.listdir(path):
if file[-4:] == '.lib':
release.write(file)
release.write('\n')
release.close()
if __name__ == '__main__':
path = r"D:\ProgramData\opencascade-7.6.0\OCCT\win64\vc14\lib"
Extract_lib(path)
对四个库目录(如果有更多三方库的话也加上)都提取出相关lib
D:\ProgramData\opencascade-7.6.0\OCCT\win64\vc14\lib
D:\ProgramData\opencascade-7.6.0\products\freeimage-3.17.0-vc14-64\lib
D:\ProgramData\opencascade-7.6.0\products\freetype-2.5.5-vc14-64\lib
D:\ProgramData\opencascade-7.6.0\products\tcltk-86-64\lib
提取出的lib如下
TKBin.lib
TKBinL.lib
TKBinTObj.lib
TKBinXCAF.lib
TKBO.lib
TKBool.lib
TKBRep.lib
TKCAF.lib
TKCDF.lib
TKernel.lib
TKFeat.lib
TKFillet.lib
TKG2d.lib
TKG3d.lib
TKGeomAlgo.lib
TKGeomBase.lib
TKHLR.lib
TKIGES.lib
TKLCAF.lib
TKMath.lib
TKMesh.lib
TKMeshVS.lib
TKOffset.lib
TKPrim.lib
TKRWMesh.lib
TKService.lib
TKShHealing.lib
TKStd.lib
TKStdL.lib
TKSTEP.lib
TKSTEP209.lib
TKSTEPAttr.lib
TKSTEPBase.lib
TKSTL.lib
TKTObj.lib
TKTopAlgo.lib
TKV3d.lib
TKVCAF.lib
TKVRML.lib
TKXCAF.lib
TKXDEIGES.lib
TKXDESTEP.lib
TKXMesh.lib
TKXml.lib
TKXmlL.lib
TKXmlTObj.lib
TKXmlXCAF.lib
TKXSBase.lib
FreeImage.lib
FreeImagePlus.lib
freetype.lib
itclstub40.lib
tcl86.lib
tclstub86.lib
tk86.lib
tkstub86.lib
将txt中的lib文件名复制粘贴到链接器-输入-附加依赖项中。
保存属性表。
设置系统环境变量
N:OCCT_ROOT
V:D:\ProgramData\opencascade-7.6.0
打开Path,添加
%OCCT_ROOT%\OCCT\win64\vc14\bin
%OCCT_ROOT%\products\freeimage-3.17.0-vc14-64\bin
%OCCT_ROOT%\products\freetype-2.5.5-vc14-64\bin
%OCCT_ROOT%\products\tcltk-86-64\bin
配置项目调试环境
项目–属性–调试–环境–编辑—添加环境如下
PATH=$(OCCT_ROOT)\OCCT\win64\vc14\bin;(OCCT_ROOT)\products\freeimage-3.17.0-vc14-64\bin;(OCCT_ROOT)\products\freetype-2.5.5-vc14-64\bin;(OCCT_ROOT)\products\tcltk-86-64\bin;$(PATH)
以上基本就配置结束了。
环境测试
#include <TopoDS_Shape.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
#include <STEPControl_Writer.hxx>
int main()
{
// 创建盒子
BRepPrimAPI_MakeBox boxMaker(10.0, 20.0, 30.0);
TopoDS_Shape boxShape = boxMaker.Shape();
// 保存为STEP文件
STEPControl_Writer writer;
writer.Transfer(boxShape, STEPControl_AsIs);
writer.Write("box_model.step");
std::cout << "盒子模型已保存为box_model.step" << std::endl;
return 0;
}
其他方法
- 通过exe安装的方式安装所有第三库,再进行cmake编译,跟以上方法类似。
- 通过修改custom.bat和msvc.bat进行编译,如此文。