文档https://vtk.org/doc/nightly/html/classvtkObject.html
https://vtk.org/Wiki/VTK/Configure_and_Build
先下载源码(貌似需要翻墙)https://vtk.org/download/

貌似需要cmake12来着
可以照着这个装https://blog.csdn.net/qq_39942341/article/details/120896883?spm=1001.2014.3001.5501

sudo apt-get install -y build-essential libgl1-mesa-dev libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev libglfw3-dev libglfw3
tar -zxvf VTK-9.1.0.rc2.tar.gz
mkdir vtk-build&& cd vtk-build
cmake-gui

第一个是源码位置
第二个是刚刚建的目录
然后点configure

这个选unix makefiles
然后finish

勾上BUILD_SHARED_LIBS

勾上VTK_LEGACY_REMOVE

勾上search旁边的Grouped和Advanced
搜索qt
VTK_MODULE_ENABLE_VTK_GUISupportQt可以改成want
VTK_MODULE_ENABLE_VTK_GUISupportQtSQL可以改成want
VTK_MODULE_ENABLE_VTK_Rendering_Qt可以改成want
VTK_MODULE_ENABLE_VTK_ViewsQt可以改成want

点一下configure
确认一下路径

再点一下configure
没有红的
然后generate

make -j 8
sudo make install
sudo ldconfig

然后验证一下
https://kitware.github.io/vtk-examples/site/Cxx/GeometricObjects/CylinderExample/

tar -xvf CylinderExample.tar
cd CylinderExample/
cmake CMakeLists.txt
make
./CylinderExample

然而你可能跟我一样报错

cat /etc/ld.so.conf
sudo sh -c "echo '/usr/local/lib' >> /etc/ld.so.conf"
sudo sh -c "ldconfig"

然后再

./CylinderExample

qt

写一个脚本test.sh
其中/usr/local/lib是vtk的lib的安装位置(默认就是这了,不过有的默认是/usr/local/lib/x86_64-linux-gnu,要检查一下)

#!/bin/bashbase_dir='/usr/local/lib';
echo 'LIBS += -L"'$base_dir'" \ '>src.txt;
for path in `ls $base_dir |grep '^libvtk.*\.so$'`
dopath=${path:3};path=${path%.so};echo '-l'$path' \ '>>src.txt;
done

然后

bash test.sh

会生成一个src.txt

添加
第一行改成vtk的include/vtk
后面的就是刚刚src.txt里的

INCLUDEPATH += "/usr/local/include/vtk-9.1"
LIBS += "-L/usr/local/lib" \
-lvtkCommonColor-9.1 \
-lvtkFiltersTexture-9.1 \
-lvtklibharu-9.1 \
-lvtkCommonMath-9.1 \
-lvtkRenderingContext2D-9.1 \
-lvtktiff-9.1 \
-lvtkCommonTransforms-9.1 \
-lvtkIOAMR-9.1 \
-lvtkIOImport-9.1 \
-lvtkkissfft-9.1 \
-lvtkIOExportPDF-9.1 \
-lvtkhdf5-9.1 \
-lvtkIOSQL-9.1 \
-lvtkDICOMParser-9.1 \
-lvtkFiltersFlowPaths-9.1 \
-lvtkFiltersProgrammable-9.1 \
-lvtkRenderingGL2PSOpenGL2-9.1 \
-lvtkFiltersModeling-9.1 \
-lvtkIOLegacy-9.1 \
-lvtkRenderingLabel-9.1 \
-lvtkIOMINC-9.1 \
-lvtkRenderingOpenGL2-9.1 \
-lvtkFiltersParallelImaging-9.1 \
-lvtkIOInfovis-9.1 \
-lvtkjsoncpp-9.1 \
-lvtkRenderingAnnotation-9.1 \
-lvtkWrappingTools-9.1 \
-lvtkpugixml-9.1 \
-lvtkRenderingQt-9.1 \
-lvtkIOExport-9.1 \
-lvtkglew-9.1 \
-lvtkParallelDIY-9.1 \
-lvtkDomainsChemistryOpenGL2-9.1 \
-lvtkInteractionStyle-9.1 \
-lvtkIOGeometry-9.1 \
-lvtkioss-9.1 \
-lvtkFiltersGeneral-9.1 \
-lvtkzlib-9.1 \
-lvtkFiltersHybrid-9.1 \
-lvtkIOHDF-9.1 \
-lvtkIOImage-9.1 \
-lvtkIONetCDF-9.1 \
-lvtkjpeg-9.1 \
-lvtksqlite-9.1 \
-lvtkDomainsChemistry-9.1 \
-lvtkogg-9.1 \
-lvtksys-9.1 \
-lvtkFiltersGeometry-9.1 \
-lvtkexodusII-9.1 \
-lvtkIOPLY-9.1 \
-lvtkIOMotionFX-9.1 \
-lvtkCommonExecutionModel-9.1 \
-lvtkParallelCore-9.1 \
-lvtkmetaio-9.1 \
-lvtkFiltersPoints-9.1 \
-lvtkIOChemistry-9.1 \
-lvtkhdf5_hl-9.1 \
-lvtkChartsCore-9.1 \
-lvtkCommonSystem-9.1 \
-lvtkIOExodus-9.1 \
-lvtkRenderingLOD-9.1 \
-lvtkCommonComputationalGeometry-9.1 \
-lvtkFiltersVerdict-9.1 \
-lvtkgl2ps-9.1 \
-lvtkImagingFourier-9.1 \
-lvtkIOVeraOut-9.1 \
-lvtkIOXMLParser-9.1 \
-lvtkInteractionWidgets-9.1 \
-lvtktheora-9.1 \
-lvtkRenderingVolume-9.1 \
-lvtkIOVideo-9.1 \
-lvtkIOCGNSReader-9.1 \
-lvtkfreetype-9.1 \
-lvtkGeovisCore-9.1 \
-lvtkpng-9.1 \
-lvtkIOLSDyna-9.1 \
-lvtklibxml2-9.1 \
-lvtkInteractionImage-9.1 \
-lvtkverdict-9.1 \
-lvtklzma-9.1 \
-lvtkexpat-9.1 \
-lvtkIOExportGL2PS-9.1 \
-lvtkImagingMorphological-9.1 \
-lvtkcgns-9.1 \
-lvtkRenderingCore-9.1 \
-lvtkIOCONVERGECFD-9.1 \
-lvtkImagingColor-9.1 \
-lvtkImagingCore-9.1 \
-lvtkIOParallel-9.1 \
-lvtkFiltersSources-9.1 \
-lvtkImagingHybrid-9.1 \
-lvtklz4-9.1 \
-lvtkFiltersTopology-9.1 \
-lvtkRenderingVolumeOpenGL2-9.1 \
-lvtkFiltersStatistics-9.1 \
-lvtkImagingMath-9.1 \
-lvtkIOCore-9.1 \
-lvtkFiltersParallel-9.1 \
-lvtkFiltersHyperTree-9.1 \
-lvtkIOXML-9.1 \
-lvtkRenderingVtkJS-9.1 \
-lvtkGUISupportQt-9.1 \
-lvtkCommonCore-9.1 \
-lvtkFiltersSelection-9.1 \
-lvtkViewsQt-9.1 \
-lvtkTestingRendering-9.1 \
-lvtkViewsContext2D-9.1 \
-lvtkIOMovie-9.1 \
-lvtkCommonDataModel-9.1 \
-lvtkImagingGeneral-9.1 \
-lvtkFiltersImaging-9.1 \
-lvtkImagingSources-9.1 \
-lvtkIOCityGML-9.1 \
-lvtkFiltersCore-9.1 \
-lvtkInfovisCore-9.1 \
-lvtkGUISupportQtSQL-9.1 \
-lvtknetcdf-9.1 \
-lvtkIOAsynchronous-9.1 \
-lvtkloguru-9.1 \
-lvtkRenderingContextOpenGL2-9.1 \
-lvtkRenderingUI-9.1 \
-lvtkIOOggTheora-9.1 \
-lvtkRenderingFreeType-9.1 \
-lvtkInfovisLayout-9.1 \
-lvtkFiltersSMP-9.1 \
-lvtkIOParallelXML-9.1 \
-lvtkFiltersExtraction-9.1 \
-lvtkRenderingImage-9.1 \
-lvtkIOIOSS-9.1 \
-lvtkfmt-9.1 \
-lvtkFiltersGeneric-9.1 \
-lvtkdoubleconversion-9.1 \
-lvtkIOTecplotTable-9.1 \
-lvtkImagingStatistics-9.1 \
-lvtkImagingStencil-9.1 \
-lvtklibproj-9.1 \
-lvtkFiltersAMR-9.1 \
-lvtkViewsCore-9.1 \
-lvtkViewsInfovis-9.1 \
-lvtkRenderingSceneGraph-9.1 \
-lvtkIOEnSight-9.1 \
-lvtkCommonMisc-9.1 \
-lvtkIOSegY-9.1 \


在ui文件里加一个OpenGL Widget


右键提升为

第一行填QVTKOpenGLNativeWidget
第二行填QVTKOpenGLNativeWidget.h
然后把勾打上
点add

点击Promote

在mainwindow.cpp里

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSurfaceFormat>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkGenericOpenGLRenderWindow.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkSmartPointer.h>#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());vtkNew<vtkNamedColors> colors;vtkNew<vtkSphereSource> sphereSource;vtkNew<vtkPolyDataMapper> sphereMapper;sphereMapper->SetInputConnection(sphereSource->GetOutputPort());vtkNew<vtkActor> sphereActor;sphereActor->SetMapper(sphereMapper);sphereActor->GetProperty()->SetColor(colors->GetColor4d("Tomato").GetData());vtkNew<vtkRenderer> renderer;renderer->AddActor(sphereActor);renderer->SetBackground(colors->GetColor3d("SteelBlue").GetData());vtkNew<vtkGenericOpenGLRenderWindow> renderWindow;renderWindow->AddRenderer(renderer);renderWindow->SetWindowName("RenderWindowNoUIFile");setCentralWidget(ui->openGLWidget);ui->openGLWidget->setRenderWindow(renderWindow);
}MainWindow::~MainWindow()
{delete ui;
}

就可以了

cmake

CMakeLists.txt
可以参考这个

cmake_minimum_required(VERSION 3.5)project(test VERSION 0.1 LANGUAGES CXX)find_package(VTK COMPONENTSCommonColorCommonCoreFiltersSourcesGUISupportQtInteractionStyleRenderingContextOpenGL2RenderingCoreRenderingFreeTypeRenderingGL2PSOpenGL2RenderingOpenGL2GUISupportQtRenderingQt
)if(NOT VTK_FOUND)message(FATAL_ERROR "${PROJECT_NAME}: Unable to find the VTK build folder.")
endif()if(NOT(TARGET VTK::GUISupportQt))message(FATAL_ERROR "${PROJECT_NAME}: VTK not built with Qt support.")
endif()if(NOT DEFINED VTK_QT_VERSION)set(VTK_QT_VERSION 5)
endif()set(qt_components Widgets)
if(${VTK_QT_VERSION} VERSION_GREATER_EQUAL 6)list(APPEND qt_components OpenGLWidgets)
endif()
list(SORT qt_components)set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ${qt_components})foreach(_qt_comp IN LISTS qt_components)list(APPEND qt_modules "Qt${VTK_QT_VERSION}::${_qt_comp}")
endforeach()message (STATUS "VTK_VERSION: ${VTK_VERSION}, Qt Version: ${Qt${VTK_QT_VERSION}Widgets_VERSION}")include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})file(GLOB UI_FILES *.ui)
file(GLOB QT_WRAP *.h *.hpp)
file(GLOB CXX_FILES *.cxx *.cpp)set(PROJECT_SOURCES${CXX_FILES}${QT_WRAP}${UI_FILES}
)if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)qt_add_executable(${PROJECT_NAME}MANUAL_FINALIZATION${PROJECT_SOURCES})
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()if(ANDROID)add_library(${PROJECT_NAME} SHARED${PROJECT_SOURCES})
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")else()add_executable(${PROJECT_NAME}${PROJECT_SOURCES})endif()
endif()target_link_libraries(${PROJECT_NAME} PRIVATE ${qt_modules})target_link_libraries(${PROJECT_NAME} PRIVATE ${VTK_LIBRARIES})
# vtk_module_autoinit is needed
vtk_module_autoinit(TARGETS ${PROJECT_NAME}MODULES ${VTK_LIBRARIES}
)set_target_properties(${PROJECT_NAME} PROPERTIESMACOSX_BUNDLE_GUI_IDENTIFIER my.example.comMACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}MACOSX_BUNDLE TRUEWIN32_EXECUTABLE TRUE
)install(TARGETS ${PROJECT_NAME}BUNDLE DESTINATION .LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})if(QT_VERSION_MAJOR EQUAL 6)qt_finalize_executable(${PROJECT_NAME})
endif()

ubuntu安装vtk相关推荐

  1. Ubuntu安装MongoDB

    https://jingyan.baidu.com/article/e5c39bf5f5ddd539d76033a9.html Ubuntu安装MongoDB4.0: https://www.jian ...

  2. ubuntu安装OpenCV详细教程(建议收藏)

    记录一篇"如何安装ubuntu下C++接口的opencv"的文章.由于转载格式有问题,直接贴个链接:ubuntu安装opencv的正确方法 注意:本人根据此博客安装遇到的问题:2. ...

  3. Linux/ubuntu 安装 redis 4.0报错解决:redis-server.service: Can't open PID file /var/run/redis/redis-server.

    此文首发于我的个人博客:Linux/ubuntu 安装 redis 4.0报错解决:redis-server.service: Can't open PID file /var/run/redis/r ...

  4. debian,ubuntu 安装mongodb 允许外网访问,修改端口,设置用户和密码

    使用apt安装mongodb: apt update && apt install mongodb 查看运行状态: systemctl status mongodb.service 结 ...

  5. ubuntu安装KVM

    ubuntu安装KVM 现在官网下载ubuntu镜像,桌面版或者服务端都可,这里以桌面端为例. 安装之前确保磁盘有足够大的空间(这很重要) 安装KVM sudo apt install qemu-kv ...

  6. 解决Ubuntu安装依赖问题

    解决Ubuntu安装依赖问题 解决Ubuntu安装依赖问题 最主要问题,修改的国内镜像源可能不是对应的ubuntu版本,大部人直接找了个镜像源就复制到source.list里面了,其实需要对应版本的, ...

  7. Ubuntu安装Ceres库-安装依赖时报错:E:无法定位软件包 libcxsparse3.1.2_朱国鑫的博客-CSDN博客

    Ubuntu安装Ceres库-安装依赖时报错:E:无法定位软件包 libcxsparse3.1.2_朱国鑫的博客-CSDN博客

  8. ubuntu 安装Pangolin 过程_余辉亮的学习笔记的博客-CSDN博客_pangolin安装

    ubuntu 安装Pangolin 过程_余辉亮的学习笔记的博客-CSDN博客_pangolin安装

  9. Ubuntu安装、使用postgresql数据库

    Ubuntu安装.使用postgresql数据库 $ sudo apt-get install postgresql  (端口为5432) $ sudo apt-get install postgre ...

最新文章

  1. 城市“脑梗” 当前城市大脑面临的困境
  2. 【转】ABP源码分析二十四:Notification
  3. mysql 权限 机器_msyql 权限配置 (mysql 其他机器连不上 )
  4. 敲了 10000 小时代码,我也没能成为一名高级程序员
  5. 图像超分辨率增强ESRGAN运行教程,有数据
  6. 使用sed在文件中定位文本的方式
  7. 四年级计算机教学实录,四年级信息技术《媒体播放器》教学设计
  8. 实例88:构建InfoGAN生成MNIST模拟数据
  9. 使用国外服务器的注意事项
  10. 服务器有什么类型?应用功能是什么
  11. excel转tsv格式
  12. 如何用计算机产生随机数,如何在计算器产生随机数
  13. (修订)斩获腾讯微信后台开发offer大神的近1.5W字的面试干货分享
  14. C++之pow()函数
  15. Swift之网络编程-网络监测
  16. ‘vue-cli-service‘ is not recognized as an internal or external command
  17. 微信小程序上传图片至服务器Springboot接收格式的问题
  18. 霸王别姬——一个时代变迁的眼泪
  19. 优化Windows xp Professional大全
  20. 一份完整的ACSII码表

热门文章

  1. php请求api接口获取公众号基本信息,使用appid,appsecret获取微信公众号基本信息
  2. android 实现性别头像,Android 实现切圆图作为头像使用实例
  3. app直接跳转至微信公众号
  4. 2020 MacBook Pro 扩展坞接口失灵解决办法
  5. WinRAR无视文件锁定直接修改编辑补丁
  6. 在windowsXP上建立Qt Creator开发环境新方法(Qt被NOKIA卖掉给digia公司之后)
  7. iOS:App Store审核被拒的原因
  8. 学习QT之信号槽机制详解
  9. linux--journalctl 日志查看方法
  10. 读书:习惯的力量-([美]杰克•霍吉)