ubuntu安装vtk

文档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/bash

base_dir='/usr/local/lib';
echo 'LIBS += -L"'$base_dir'" \ '>src.txt;
for path in `ls $base_dir |grep '^libvtk.*\.so$'`
do
	path=${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 COMPONENTS
  CommonColor
  CommonCore
  FiltersSources
  GUISupportQt
  InteractionStyle
  RenderingContextOpenGL2
  RenderingCore
  RenderingFreeType
  RenderingGL2PSOpenGL2
  RenderingOpenGL2
  GUISupportQt
  RenderingQt
)

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} PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_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()

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Ubuntu安装VTK(The Visualization ToolKit)的步骤如下: 1. 打开终端并执行以下命令,更新软件包列表: ``` sudo apt-get update ``` 2. 执行以下命令,安装VTK所需的依赖项: ``` sudo apt install -y build-essential cmake git unzip qt5-default libqt5opengl5-dev libqt5x11extras5-dev libeigen3-dev libboost-all-dev libglew-dev libglvnd-dev ``` 3. 下载VTK源码。你可以从VTK的官方网站或GitHub上获取源码。 4. 解压下载的源码文件。 5. 进入解压后的源码目录,并创建一个用于构建VTK的目录: ``` mkdir build cd build ``` 6. 执行以下命令,配置构建过程: ``` cmake .. ``` 7. 执行以下命令,开始构建VTK: ``` make ``` 8. 执行以下命令,安装VTK: ``` sudo make install ``` 完成以上步骤后,VTK将成功安装在你的Ubuntu系统上。请注意,这些步骤是在Ubuntu 20.04上进行的,但也适用于其他版本的Ubuntu。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Ubuntu20.04安装VTK](https://blog.csdn.net/m0_58235748/article/details/130528211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Ubuntu16.04中 VTK8.1.1 安装](https://blog.csdn.net/dell5200/article/details/81142951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nightmare004

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值