编译使用VTK官网的VTKExamples

除了VTK源码包里包含了一些简单的examples,VTK的官网还有一些examples,源码在github上直接搜索VTKExamples即可得到,压缩包275m,没充钱科学上网的估计不好clone下来,我这里放个度盘的链接:

链接:https://pan.baidu.com/s/1XnLMeZXKpDKWjbilpcDo0A 
提取码:h4uw

编译使用VTK官网的VTKExamples_第1张图片

 

把clone下来的压缩包解压,到src里找cxx的,也就是c++版本的代码,如下图所示,我们用Widgets这个工程试试,在同级目录下新建一个Widgets-build的文件夹,用来存放cmake生成的vs工程文件。

编译使用VTK官网的VTKExamples_第2张图片

 

打开cmake-gui,如下图这样设置一下,然后点击左下角的Configure。

编译使用VTK官网的VTKExamples_第3张图片

 

之后会报红,这时候需要设置VTK_DIR,也就是上一篇博文中编译好的VTK的lib中的cmake路径,至于LIBRARY_OUTPUT_PATH设不设置都没关系,因为不会有输出,然后继续Configure。

编译使用VTK官网的VTKExamples_第4张图片

 

这时候肯定会出现一个error的弹窗,原因是VTKExamples里的cmakelist写的不完善,需要进Widgets的文件夹里修改cmakelist.txt,如下图所示,在最前面加上指定cmake版本的一行话,以及删除QUITE上面的那一行。

编译使用VTK官网的VTKExamples_第5张图片

cmake_minimum_required(VERSION 3.17)
project (${WIKI}Widgets)

if(NOT VTK_BINARY_DIR)
  set(VTK_LIBRARIES "")
  find_package(VTK COMPONENTS
    vtkCommonColor
    vtkCommonCore
    vtkCommonDataModel
    vtkCommonTransforms
    vtkFiltersCore
    vtkFiltersSources
    vtkIOImage
    vtkIOXML
    vtkImagingGeneral
    vtkImagingHybrid
    vtkImagingSources
    vtkImagingStatistics
    vtkImagingStencil
    vtkInteractionStyle
    vtkInteractionWidgets
    vtkRenderingAnnotation
    vtkRenderingCore
    vtkRenderingFreeType
    vtkRenderingOpenGL2
    OPTIONAL_COMPONENTS
    
    QUIET
    )
     if (VTK_VERSION VERSION_LESS "8.90.0")
    include(${VTK_USE_FILE})
  endif()
endif()

set(KIT_LIBS ${VTK_LIBRARIES})

#
# Build all .cxx files in the directory
file(GLOB ALL_FILES *.cxx)
foreach(SOURCE_FILE ${ALL_FILES})
  string(REPLACE ".cxx" "" TMP ${SOURCE_FILE})
  string(REPLACE ${CMAKE_CURRENT_SOURCE_DIR}/ "" EXAMPLE ${TMP})
  add_executable(${WIKI}${EXAMPLE} ${EXECUTABLE_FLAG} ${EXAMPLE}.cxx)
  target_link_libraries(${WIKI}${EXAMPLE} ${KIT_LIBS})
  if (NOT VTK_VERSION VERSION_LESS "8.90.0")
    vtk_module_autoinit(
      TARGETS ${WIKI}${EXAMPLE}
      MODULES ${VTK_LIBRARIES}
      )
  endif()
endforeach()

if (BUILD_TESTING)
  # Testing
  set(KIT Widgets)

  set(NEEDS_ARGS
    CheckerboardWidget
    OrientationMarkerWidget
    Slicer2D
    RectilinearWipeWidget
    )

  set(DATA ${WikiExamples_SOURCE_DIR}/src/Testing/Data)
  add_test(${KIT}-OrientationMarkerWidget ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${KIT}CxxTests
    TestOrientationMarkerWidget ${DATA}/Bunny.vtp)

  add_test(${KIT}-RectilinearWipeWidget ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${KIT}CxxTests
    TestRectilinearWipeWidget ${DATA}/Gourds2.jpg ${DATA}/Ox.jpg)

  add_test(${KIT}-CheckerboardWidget ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${KIT}CxxTests
    TestCheckerboardWidget ${DATA}/Gourds2.jpg ${DATA}/Ox.jpg)

  add_test(${KIT}-Slider2D ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${KIT}CxxTests
    TestSlider2D -E 25)
  include(${WikiExamples_SOURCE_DIR}/CMake/ExamplesTesting.cmake)

endif()

 

现在再ConfigureGenerate就不会出错了,然后点击Open Project,在vs中随便找个设定成启动项目,就拿第一个AngleWidget吧,然后ctrl+f5运行,此时还会出错,因为没放vtk的dll,把之前编译好的vtk的dll放进Widget-build文件夹里的Debug和Release中,这时候再运行就不会出错了。

编译使用VTK官网的VTKExamples_第6张图片

编译使用VTK官网的VTKExamples_第7张图片

你可能感兴趣的:(VTK)