如何写VTK的Cmake文件

如果按照官方指导的步骤在Mac上成功编译安装了VTK,那么下一步如何使用VTK库呢?用Cmake是一种简单的途径,那么如何写CMakeLists.txt呢,参考官方的例子

必须熟悉新版本的vtk的cmake文件命令,比如老版本的例子中的vtk_module_configinclude(${VTK_USE_FILE})在新版8.90.0中都不适用了。

调用vtk的源代码: 绘制一个圆锥


#include "vtkConeSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkCamera.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include <vtkRenderWindowInteractor.h>
int main()
{
  
  vtkConeSource *cone = vtkConeSource::New();
  cone->SetHeight( 3.0 );
  cone->SetRadius( 1.0 );
  cone->SetResolution( 10 );

  vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();
  coneMapper->SetInputConnection( cone->GetOutputPort() );

  vtkActor *coneActor = vtkActor::New();
  coneActor->SetMapper( coneMapper );

  vtkRenderer *ren1= vtkRenderer::New();
  ren1->AddActor( coneActor );
  ren1->SetBackground( 0.1, 0.2, 0.4 );

  vtkRenderWindow *renWin = vtkRenderWindow::New();
  renWin->AddRenderer( ren1 );
  renWin->SetSize( 300, 300 );
  vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
  vtkSmartPointer<vtkRenderWindowInteractor>::New();
  renderWindowInteractor->SetRenderWindow(renWin);

  renWin->Render();
  ren1->GetActiveCamera()->Azimuth( 1 );

  renderWindowInteractor->Start();

  cone->Delete();
  coneMapper->Delete();
  coneActor->Delete();
  ren1->Delete();
  renWin->Delete();

  return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.3 FATAL_ERROR)

project(cone)

find_package(VTK COMPONENTS 
  vtkCommonCore
  vtkFiltersSources
  vtkFiltersSources
  vtkInteractionStyle
  vtkRenderingOpenGL2 QUIET)
if (NOT VTK_FOUND)
  message("Skipping cone: ${VTK_NOT_FOUND_MESSAGE}")
  return ()
endif()
message (STATUS "VTK_VERSION: ${VTK_VERSION}")
if (VTK_VERSION VERSION_LESS "8.90.0")
  # old system
  include(${VTK_USE_FILE})
  add_executable(conne MACOSX_BUNDLE Cone.cxx )
  target_link_libraries(cone PRIVATE ${VTK_LIBRARIES})
else ()
  # include all components
  add_executable(cone MACOSX_BUNDLE Cone.cxx )
  target_link_libraries(cone PRIVATE ${VTK_LIBRARIES})
  # vtk_module_autoinit is needed
  vtk_module_autoinit(
    TARGETS cone
    MODULES ${VTK_LIBRARIES}
    )
endif () 

结果

make之后会生成一个名为cone.app的Mac程序包,直接双击就可以运行。.app的生成是由MACOSX_BUNDLE变量控制的

绘图结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CMake学习 本篇分享一下有关CMake的一些学习心得以及相关使用。 本文目录如下: [1、CMake介绍] [...
    AlphaGL阅读 12,295评论 11 79
  • 注:首发地址 1. 前言 当在做 Android NDK 开发时,如果不熟悉用 CMake 来构建,读不懂 CMa...
    cfanr阅读 24,578评论 1 53
  • 初衷 CMake能用来编写跨平台(cross-platform)的构建规则,通过这些规则来调用各个平台的编译器、链...
    ArthurBreeze阅读 50,770评论 0 13
  • 转载自我的博客:CMake 简介和 CMake 模板。 如果你用 Linux 操作系统,使用 cmake 会简单很...
    district10阅读 11,579评论 3 27
  • 本文不介绍cmake命令使用方法,也不讲CMakeLists.txt的语法,有需要的读者可以看我另外相关的文章即可...
    konishi5202阅读 1,141评论 0 5