在搭建vtk的基本环境之后,接下来就是学习过程了。但是自己在第一个例子就出现了一堆问题,这里贴出来解决之道,先填一波坑再说。
我是按照:东灵VTK教程系列导航 学习的。 按照上面的介绍,首先编写第一个cmake编译vtk的例子:
首先是cmake代码:
cmake_minimum_required(VERSION2.8) project(TestVTKInstall) find_package(VTKREQUIRED) include(${VTK_USE_FILE}) add_executable(${PROJECT_NAME}TestVTKInstall.cpp) target_link_libraries(${PROJECT_NAME}vtkRendering vtkCommon)然后是cpp代码:
#include <vtkRenderWindow.h> #include <vtkSmartPointer.h> int main() { vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New(); renWin->Render(); std::cin.get(); return 0; }按照作者的例子: 在编译的时候就出现了一个弹窗,上面的内容是 error configuration process, project files may be invalid
首先按照这篇文章解决Cmake VTK时出现问题:error configuration process, project files may be invalid的方法并没有起到作用。这里稍微介绍一下这种方法。
用Cmake配置生成对应的VS解决方案时,需要对应正确的vs版本。这里和之前安装VTK时候使用的版本一致。
| 点击左上角的file->delete cathe 清理一下缓存。
按照上面的介绍并没有解决我们的问题,那只好继续google了。我们在stackoverflow几篇帖子上看到我们类似的问题。
VTK + Cmake -> USE_VTK_RENDERING erroCMake error: ‘target is not built by this project’Cmake link liabray target link errorCMake OpenCV Cannot Specify Link Libraries按照上面介绍,和我们的CMakeLists代码做出对比,我们经过一句一句代码的尝试,最后发现一个非常隐蔽的错误,就是我们需要在CMakeLists中一定需要注意打空格!!!
具体来说,
就是第一行: VERSION和2.8有一个空格。第三行: VTK 和REQUIRED有一个空格第9行,TestVTKInstall.cpp之前有一个空格。第11行,我们将之前的vtkRendering vtkCommon 修改成${VTK_LIBRARIES}另外之前还有一个空格。如果单纯的加一个空格,虽然cmake是没有什么错误的。但是之后再vs编译的时候,会出现如下错误,所以修改就好了。最后CMakeLists.txt代码:
cmake_minimum_required(VERSION 2.8) project(TestVTKInstall) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) add_executable(${PROJECT_NAME} TestVTKInstall.cpp) target_link_libraries(${PROJECT_NAME} ${VTK_LIBRARIES})在cmake没有错误之后,我们configure, 然后generate。以管理员的方式打开vs2017。打开我们编译好的文件。首先 首先我们编译ALL_BUILD点击F7,或者是生成就可以了。如果没有错误,右键TestVTKInstall将其设置为启动项,然后点击F5,或者运行就可以输出正确的结果了。
Over
遇到问题一个个解决就好了。