1. 程式人生 > >Cmake編譯 VTK時出現問題:error configuration process, project files may be invalid的解決方法

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配置生成對應的VS解決方案時,需要對應正確的vs版本。這裡和之前安裝VTK時候使用的版本一致。

2.2 沒有清理之前錯誤快取

| 在這裡插入圖片描述
點選左上角的file->delete cathe 清理一下快取。

2. 3 cmake list程式編寫問題

按照上面的介紹並沒有解決我們的問題,那隻好繼續google了。我們在stackoverflow

幾篇帖子上看到我們類似的問題。

  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中一定需要注意打空格!!!
在這裡插入圖片描述

具體來說,

  1. 就是第一行: VERSION2.8有一個空格。
  2. 第三行: VTKREQUIRED有一個空格
  3. 第9行,TestVTKInstall.cpp之前有一個空格。
  4. 第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})

3. 在vs執行

在cmake沒有錯誤之後,我們configure, 然後generate。以管理員的方式開啟vs2017。開啟我們編譯好的檔案。首先在這裡插入圖片描述
首先我們編譯ALL_BUILD點選F7,或者是生成就可以了。如果沒有錯誤,右鍵TestVTKInstall將其設定為啟動項,然後點選F5,或者執行就可以輸出正確的結果了。
在這裡插入圖片描述

Over

遇到問題一個個解決就好了。