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无从知道这些信息。

posted @ 2019-04-16 11:36  李建业  阅读(2157)  评论(0编辑  收藏  举报