参考文章:VTK测试例子
CMakeLists.txt文件代码如下
cmake_minimum_required(VERSION 2.8)
#指定工程名称
project(TestVTKInstall)
#find_package命令搜索的就是VTK的配置文件VTKConfig.cmake
find_package(VTK REQUIRED)
#include (${VTK_USE_FILE})命令就是包含UseVTK.cmake文件
include(${VTK_USE_FILE})
add_executable(${PROJECT_NAME} TestVTKInstall.cpp)
#链接库文件
#在VTKConfig.cmake这个文件里(用记事本打开),可以找到以下语句:
#SET(VTK_LIBRARIES"vtkCommon;vtkFiltering;vtkImaging;vtkGraphics;vtkGenericFiltering;vtkIO;vtkRendering;vtkVolumeRendering;vtkHybrid;vtkWidgets;vtkInfovis;vtkGeovis;vtkViews;vtkCharts")
target_link_libraries(${PROJECT_NAME} ${VTK_LIBRARIES})
TestVTKInstall.cpp代码如下
#include"vtkRenderWindow.h"
#include"vtkSmartPointer.h"
int main()
{
vtkSmartPointer<vtkRenderWindow> renWin =vtkSmartPointer<vtkRenderWindow>::New();
renWin->Render();
std::cin.get();
return 0;
}
执行上面的代码遇到一个错误
#error while loading shared libraries: libvtkFiltersModeling-8.2.so.1: cannot open shared object file: No such file or directory
分析:是存在libvtkFiltersModeling-8.2.so.1这个文件 但系统找不到
默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件,而通过源码包进行安装时,会将库安装在/usr/local/lib目录下;当运行程序需要链接动态库时,提示找不到相关的.so库
解决方法是在终端上输入下面这条命令
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH
或者在终端上面执行下面的命令
ldconfig
运行结果