Cmake编译 VTK时出现问题:error configuration process, project files may be invalid的解决方法

在搭建vtk的基本环境之后,接下来就是学习过程了。但是自己在第一个例子就出现了一堆问题,这里贴出来解决之道,先填一波坑再说。

1. 问题介绍

我是按照:东灵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

2. 问题解决:

首先按照这篇文章解决Cmake VTK时出现问题:error configuration process, project files may be invalid的方法并没有起到作用。这里稍微介绍一下这种方法。

2.1 没有使用CMake选择对应机器上的VS版本。

Cmake编译 VTK时出现问题:error configuration process, project files may be invalid的解决方法

用Cmake配置生成对应的VS解决方案时,需要对应正确的vs版本。这里和之前安装VTK时候使用的版本一致。

2.2 没有清理之前错误缓存

| Cmake编译 VTK时出现问题:error configuration process, project files may be invalid的解决方法
点击左上角的file->delete cathe 清理一下缓存。

2. 3 cmake list程序编写问题

按照上面的介绍并没有解决我们的问题,那只好继续google了。我们在*几篇帖子上看到我们类似的问题。

  1. VTK + Cmake -> USE_VTK_RENDERING erro
  2. CMake error: ‘target is not built by this project’
  3. Cmake link liabray target link error
  4. CMake OpenCV Cannot Specify Link Libraries

按照上面介绍,和我们的CMakeLists代码做出对比,我们经过一句一句代码的尝试,最后发现一个非常隐蔽的错误,就是我们需要在CMakeLists中一定需要注意打空格!!!
Cmake编译 VTK时出现问题:error configuration process, project files may be invalid的解决方法

具体来说,

  1. 就是第一行: VERSION2.8有一个空格。
  2. 第三行: VTKREQUIRED有一个空格
  3. 第9行,TestVTKInstall.cpp之前有一个空格。
  4. 第11行,我们将之前的vtkRendering vtkCommon 修改成${VTK_LIBRARIES}另外之前还有一个空格。如果单纯的加一个空格,虽然cmake是没有什么错误的。但是之后再vs编译的时候,会出现如下错误,所以修改就好了。
    Cmake编译 VTK时出现问题:error configuration process, project files may be invalid的解决方法

最后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})

3. 在vs运行

在cmake没有错误之后,我们configure, 然后generate。以管理员的方式打开vs2017。打开我们编译好的文件。首先Cmake编译 VTK时出现问题:error configuration process, project files may be invalid的解决方法
首先我们编译ALL_BUILD点击F7,或者是生成就可以了。如果没有错误,右键TestVTKInstall将其设置为启动项,然后点击F5,或者运行就可以输出正确的结果了。
Cmake编译 VTK时出现问题:error configuration process, project files may be invalid的解决方法

Over

遇到问题一个个解决就好了。