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/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相关推荐
- Ubuntu安装MongoDB
https://jingyan.baidu.com/article/e5c39bf5f5ddd539d76033a9.html Ubuntu安装MongoDB4.0: https://www.jian ...
- ubuntu安装OpenCV详细教程(建议收藏)
记录一篇"如何安装ubuntu下C++接口的opencv"的文章.由于转载格式有问题,直接贴个链接:ubuntu安装opencv的正确方法 注意:本人根据此博客安装遇到的问题:2. ...
- 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 ...
- debian,ubuntu 安装mongodb 允许外网访问,修改端口,设置用户和密码
使用apt安装mongodb: apt update && apt install mongodb 查看运行状态: systemctl status mongodb.service 结 ...
- ubuntu安装KVM
ubuntu安装KVM 现在官网下载ubuntu镜像,桌面版或者服务端都可,这里以桌面端为例. 安装之前确保磁盘有足够大的空间(这很重要) 安装KVM sudo apt install qemu-kv ...
- 解决Ubuntu安装依赖问题
解决Ubuntu安装依赖问题 解决Ubuntu安装依赖问题 最主要问题,修改的国内镜像源可能不是对应的ubuntu版本,大部人直接找了个镜像源就复制到source.list里面了,其实需要对应版本的, ...
- Ubuntu安装Ceres库-安装依赖时报错:E:无法定位软件包 libcxsparse3.1.2_朱国鑫的博客-CSDN博客
Ubuntu安装Ceres库-安装依赖时报错:E:无法定位软件包 libcxsparse3.1.2_朱国鑫的博客-CSDN博客
- ubuntu 安装Pangolin 过程_余辉亮的学习笔记的博客-CSDN博客_pangolin安装
ubuntu 安装Pangolin 过程_余辉亮的学习笔记的博客-CSDN博客_pangolin安装
- Ubuntu安装、使用postgresql数据库
Ubuntu安装.使用postgresql数据库 $ sudo apt-get install postgresql (端口为5432) $ sudo apt-get install postgre ...
最新文章
- 城市“脑梗” 当前城市大脑面临的困境
- 【转】ABP源码分析二十四:Notification
- mysql 权限 机器_msyql 权限配置 (mysql 其他机器连不上 )
- 敲了 10000 小时代码,我也没能成为一名高级程序员
- 图像超分辨率增强ESRGAN运行教程,有数据
- 使用sed在文件中定位文本的方式
- 四年级计算机教学实录,四年级信息技术《媒体播放器》教学设计
- 实例88:构建InfoGAN生成MNIST模拟数据
- 使用国外服务器的注意事项
- 服务器有什么类型?应用功能是什么
- excel转tsv格式
- 如何用计算机产生随机数,如何在计算器产生随机数
- (修订)斩获腾讯微信后台开发offer大神的近1.5W字的面试干货分享
- C++之pow()函数
- Swift之网络编程-网络监测
- ‘vue-cli-service‘ is not recognized as an internal or external command
- 微信小程序上传图片至服务器Springboot接收格式的问题
- 霸王别姬——一个时代变迁的眼泪
- 优化Windows xp Professional大全
- 一份完整的ACSII码表
热门文章
- php请求api接口获取公众号基本信息,使用appid,appsecret获取微信公众号基本信息
- android 实现性别头像,Android 实现切圆图作为头像使用实例
- app直接跳转至微信公众号
- 2020 MacBook Pro 扩展坞接口失灵解决办法
- WinRAR无视文件锁定直接修改编辑补丁
- 在windowsXP上建立Qt Creator开发环境新方法(Qt被NOKIA卖掉给digia公司之后)
- iOS:App Store审核被拒的原因
- 学习QT之信号槽机制详解
- linux--journalctl 日志查看方法
- 读书:习惯的力量-([美]杰克•霍吉)