Windows 环境 OCCT 8.0 编译构建及与 Qt6 项目集成

一、所需工具

工具 版本 说明
Visual Studio 2022 (Professional) 编译器
CMake 3.31.12 构建工具
Qt 6.11 用于后续界面开发

注意 :安装过程简单,此处不再赘述。工具包

Qt 镜像安装(推荐使用国内源加速):

  1. qt-online-installer-windows-x64-4.11.0.exe 所在文件夹,按住 Shift + 鼠标右键,选择"打开 PowerShell 窗口"。

  2. 执行以下命令:

    powershell 复制代码
    .\qt-online-installer-windows-x64-4.11.0.exe --mirror https://mirrors.ustc.edu.cn/qtproject

二、准备工作

2.1 下载源码与第三方库

2.2 创建目录结构

建议在某个工作目录(如 E:/OCCT)下创建以下三个文件夹:3rdparty、occt-build-vs2022-x64、occt-install

复制代码
OCCT/
├── 3rdparty   # 一系列第三方库
	├── angle-gles2-2.1.0-vc14-64i/
	...
    └── zlib-1.2.8-vc14-64/
├── OCCT-8_0_0	# OCCT源码
	├── .github/
	...
    └── README.md
├── occt-build-vs2022-x64/	# occt构建文件夹
└── occt-install/	# occt 安装文件夹

关键依赖FreeTypeTcl/Tk 是必须的,其他按需启用。


三、使用 CMake 生成 VS 2022 解决方案

3.1 启动 CMake-GUI

  1. 设置源码路径为 E:/OCCT/OCCT-8_0_0
  2. 设置构建路径为 E:/OCCT/occt-build-vs2022-x64
  3. 点击 Configure ,选择 Visual Studio 17 2022 ,平台 x64

3.2 配置第三方库路径

首次 Configure 后会报红,需要填写以下变量:

变量名
3RDPARTY_DIR E:/OCCT/3rdparty
3RDPARTY_TCL_DIR E:/OCCT/3rdparty/tcltk-8.6.15-x64
3RDPARTY_TK_DIR E:/OCCT/3rdparty/tcltk-8.6.15-x64
INSTALL_DIR E:/OCCT/occt-install

再次点击 Configure,直至红色全部消失。

3.3 生成项目

点击 Generate ,看到 Generating done 即成功。


四、使用 Visual Studio 2022 编译 OCCT

4.1 打开解决方案

进入 occt-build-vs2022-x64 文件夹,双击 OCCT.sln 使用 VS2022 打开。

4.2 选择配置并编译

  • 在 VS 顶部工具栏选择 Release(也可先 Debug,本文以 Release 为例)
  • 解决方案资源管理器 中右键 解决方案 'OCCT' (69个项目)生成解决方案
  • 等待约 15 分钟(视机器性能而定)



4.3 安装(部署)到 occt-install

右键项目 INSTALL仅用于项目仅生成 INSTALL

完成后,occt-install 目录结构应如下:

复制代码
occt-install/
├── bin/ # Release 动态库
├── bind/ # Debug 动态库
├── inc/ # 所有头文件
├── lib/ # Release 导入库
└── libd/ # Debug 导入库

至此 OCCT 编译安装完成 ✅


五、在自己的 Qt 项目中集成 OCCT

5.1 推荐的项目目录结构

复制代码
occt_project/
├── 3rdparty   # 第三方库
    └── occt/
    	├── bin/   # release 动态库
    	├── bind/  # debug 动态库
    	├── inc/   # 头文件
    	├── lib/   # release 链接库
    	└── libd/  # debug 链接库
├── bin	# 项目输出文件
	├── Debug/
	└── Release/
		└── occt_project.exe # 最终输出文件
├── build/	# 项目中间文件
└── src/	# 项目源码

5.2 CMakeLists.txt 模板

cmake 复制代码
cmake_minimum_required(VERSION 3.19)
project(occt_project LANGUAGES CXX)

find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets)
qt_standard_project_setup()

# 设置输出目录(与项目目录平行)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../bin/$<CONFIG>)

qt_add_executable(occt_project
    WIN32 MACOSX_BUNDLE
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
)

target_link_libraries(occt_project
    PRIVATE
        Qt::Core
        Qt::Widgets
)

#  集成 OCCT
set(OCCT_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/occt)

# 头文件
target_include_directories(occt_project PRIVATE ${OCCT_ROOT}/inc)

# 库搜索路径
target_link_directories(occt_project PRIVATE ${OCCT_ROOT}/lib)

# 自动链接所有 lib 和 libd
file(GLOB OCCT_LIBS_DEBUG   "${OCCT_ROOT}/libd/*.lib")
file(GLOB OCCT_LIBS_RELEASE "${OCCT_ROOT}/lib/*.lib")

target_link_libraries(occt_project PRIVATE
    $<$<CONFIG:Debug>:${OCCT_LIBS_DEBUG}>
    $<$<NOT:$<CONFIG:Debug>>:${OCCT_LIBS_RELEASE}>
)

# Qt 部署(自动复制 Qt 动态库)
qt_generate_deploy_app_script(
    TARGET occt_project
    OUTPUT_SCRIPT deploy_script
    NO_UNSUPPORTED_PLATFORM_ERROR
)
install(SCRIPT ${deploy_script})

说明

  • 上述配置会自动为 Debug 链接 libd/*.lib,Release 链接 lib/*.lib
  • 运行时需要将 3rdparty/occt/bin/bind/ 中的 DLL 复制到 exe 同目录,或者添加 PATH 环境变量。

5.3 验证 OCCT 是否工作

在任意源文件中加入以下测试函数并调用(例如在 mainwindow 构造函数或按钮槽中):

cpp 复制代码
#include <BRepPrimAPI_MakeBox.hxx>
#include <BRepGProp.hxx>
#include <GProp_GProps.hxx>
#include <QDebug>

void testOCCT() {
    BRepPrimAPI_MakeBox box(10.0, 20.0, 30.0);
    TopoDS_Shape shape = box.Shape();
    GProp_GProps props;
    BRepGProp::VolumeProperties(shape, props);
    double volume = props.Mass();
    qDebug() << "Box volume:" << volume;   // 应输出 6000
}

编译运行后控制台输出 6000 即表示集成成功。

项目源码

对你有用就点个赞👍,以后需要用到就收藏⭐

相关推荐
C++ 老炮儿的技术栈2 小时前
Qt工控实战:自研机器人TCP长连接客户端(粘包处理+心跳保活+自动重连完整源码解析)
qt·tcp/ip·机器人
郝学胜-神的一滴2 小时前
CMake 019:程序生成与清理全解析
开发语言·c++·qt·程序人生·软件构建·cmake
森G3 小时前
76、仿ASIO实现的Linux c++服务器------服务器源码解析----云视频服务项目
c++·qt
superkcl20224 小时前
【QT Thread】
c++·qt
vx-Biye_Design4 小时前
springboot安阳地区研学旅游服务小程序-计算机毕业设计源码12785
java·vue.js·windows·spring boot·tomcat·maven·mybatis
gc_22994 小时前
学习在Windows中基于Docker部署Dify的步骤
windows·docker·dify
caimouse5 小时前
Reactos 第 10 章 网络操作 — 10.3.2 LAN驱动模块
服务器·网络·windows
A尘埃5 小时前
批处理命令(Linux/Mac、Windows项目启动脚本)
linux·windows·macos
森G5 小时前
78、框架分析------服务器源码解析----云视频服务项目
服务器·c++·qt