开发图形相关的软件时,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无从知道这些信息。
原文地址:https://www.cnblogs.com/ljy339/p/10715952.html
时间: 2024-10-29 10:15:03