cmake配置vs+qt+vtk

Posted ljy339

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake配置vs+qt+vtk相关的知识,希望对你有一定的参考价值。

开发图形相关的软件时,qt+vtk是一个不错的搭配,qt负责gui,vtk负责底层图形渲染。初步尝试用cmake来构建解决方案,cmakelists.txt如下。

cmake_minimum_required(VERSION 3.3)

project(testproject)

# Instruct CMake to run moc automatically when needed
set(CMAKE_AUTOMOC ON)
# Create code from a list of Qt designer ui files
set(CMAKE_AUTOUIC ON)

# cmake通常找不到qt5的路径,这里手动设置一下吧,当然也可以在cmake-gui上根据报错的提示来设置
#set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "c:\Qt\Qt5.12.2\5.12.2\msvc2017_64\lib\cmake\Qt5")

# Find the needed Qt libraries
find_package(Qt5 COMPONENTS
Core Gui Widgets REQUIRED)

# VTK相关target
find_package(VTK REQUIRED)
# 该命令是必须的,否则构建出的项目运行时会有初始化的问题
include(${VTK_USE_FILE})

# support for out-of-source build
INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
)

# Populate a CMake variable with the sources
set(SRC
test.h test.cpp
test.ui test.qrc
main.cpp
)

set(UI test.ui)
set(RCC test.qrc)

# Assign filters. Optional, but useful.
# 对于使用visiual studio加qt-vsaddin开发来说,形成相应的过滤器
source_group("Form Files" FILES ${UI})
source_group("Resource Files" FILES ${RCC})
# 让这个过滤器为空吧。因为用vs+vsaddin直接建立qt项目时,会产生这个过滤器,但也不会自动添加产生的moc文件,不知道原因,
# 因此就空着吧。
source_group("Generated Files")

# 添加target的所有相关源文件
# WIN32也是必须的,This makes it a GUI executable instead of a console application.
add_executable(testproject WIN32 ${SRC})
# 添加target对QT和VTK的所有依赖库,包括相应的头文件,这里会自动识别。
target_link_libraries(testproject ${QT_LIBRARIES} ${VTK_LIBRARIES})

 

 

可以成功生成qt+vtk的visiual studio解决方案。但存在一个问题,生成的项目和vs直接新建的qt项目不同,没有带有qt相关的信息,例如在项目上点右键,没有qt相关的信息,例如添加class等。这条路适合打包已有完整的解决方案,但不太适合从零开始构建一个项目。

其实想想也正常,cmake只负责qt和vtk形成visiual studio的解决方案,而vs和qt的项目属性级别的深度集成是 Qt VS Tools(qt-vsaddin)负责的,cmake无从知道这些信息。

以上是关于cmake配置vs+qt+vtk的主要内容,如果未能解决你的问题,请参考以下文章

初步编译QT5.15.2+VS2019+VTK8.1.0

VTK用于QT的安装

win10环境下VTK7.1的编译和Qt调用VTK的详细教程二(VS2013编译支持Qt的VTK库)

Cmake动态编译VTK库(QVtkwidget)

001-Qt&Vtk-编译

win10环境下VTK7.1的编译和Qt调用VTK的详细教程(本文链接含VTK库和测试代码的分享)