zoukankan      html  css  js  c++  java
  • 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无从知道这些信息。

  • 相关阅读:
    Learning to Compare: Relation Network for Few-Shot Learning 论文笔记
    修改python import模块中的变量
    roslaunch保存的log文件没有打印的ERROR信息
    python json demo
    vscode 1.32.x按下鼠标左键无法拖曳选择,而旧一点的版本1.30.2可以
    java-ee--------jdbc
    集合
    关键字
    java面向对象
    数组
  • 原文地址:https://www.cnblogs.com/ljy339/p/10715952.html
Copyright © 2011-2022 走看看