如何将VTK整合到Qt中(1)? -- 使用cmake管理Qt工程

2 篇文章 0 订阅

作为一个跨平台的GUI开发工具,Qt的优点在这里不再陈述。VTK提供了大量的类来支持Qt,因此把两者整合是相对比较简单的。

VTK是用CMake进行管理的,而Qt本身提供了qmake来编译Qt工程。对于小型项目,使用qmake管理工程的确比较方便。但是对于大型项目来说,使用CMake来管理工程是一个更加明智的选择。

下面我们将看一下如何使用CMake来管理Qt工程,并如何用QVTKWidget整合Qt和VTK

首先我们来看一下当新建一个demo case并且选择cmake作为编译工具时,Qt帮我们创建的最简单的CMAKELists.txt。

cmake_minimum_required(VERSION 3.5)

project(VTKImbuedQt LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)


find_package(Qt5 COMPONENTS Widgets REQUIRED)
  
add_executable(cmakeProject
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
)

target_link_libraries(cmakeProject PRIVATE Qt5::Widgets)

我们可以看到三行代码将CMAKE_AUTOUIC, CMAKE_AUTOMOC, CMAKE_MOC都设置为on。在解释这三行代码之前, 我们可以看一下cmake编译Qt文件时的流程图。

Qt 依赖于一些代码生成工具,例如生成元对象代码 moc,用于小部件布局代码生成的 uic,以及用于虚拟文件系统内容生成的 rcc工具。 

AUTOMOC决定了cmake是否要检测C++文件来决定其是否需要执行MOC命令。如果在头文件中发现了AUTOMAC_MACRO_NAMES的宏(比如说Q_Object),则将对此头文件执行moc命令,并且生成moc_<basename>.cpp的文件。如果宏定义在cpp文件中,则moc将会生成<basename>.moc文件。此<basename>.moc文件必须要被包含在cpp文件中。包含的 moc_*.cpp 和 *.moc 文件将添加在 <AUTOGEN_BUILD_DIR>/include 目录中,该目录自动添加到 INCLUDE_DIRECTORIES。生成的 ui_*.h 文件放置在 <AUTOGEN_BUILD_DIR>/include 目录中,该目录会自动添加到 INCLUDE_DIRECTORIES。

AUTOUIC决定了cmake是否要检测C++文件来决定其是否需要执行uic命令。如果c++的预处理指令#include 包含了ui_<basename>.h并且<basename>.ui文件存在,则uic命令将作用到具体的ui文件上。

AUTORCC可以将*.qrc资源文件转化为qrc_*.cpp文件,以供后续编译使用。

在add_executable命令调用时,需要我们将SRC,header和UI文件以及qrc资源文件显式声明。

code source: qingdong_wang/Qt Learning Progress - Gitee.comhttps://gitee.com/qingdong-wang/qt-learning-progress/tree/master/QtVTKCombinationExample

参考:《VTK图形图像开发进阶》张晓东 罗火灵编著

cmake-qt(7) — CMake 3.22.1 Documentationhttps://cmake.org/cmake/help/latest/manual/cmake-qt.7.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值