如果按照官方指导的步骤在Mac上成功编译安装了VTK,那么下一步如何使用VTK库呢?用Cmake是一种简单的途径,那么如何写CMakeLists.txt呢,参考官方的例子
必须熟悉新版本的vtk的cmake文件命令,比如老版本的例子中的vtk_module_config
和include(${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
变量控制的