Cmake編譯 VTK時出現問題:error configuration process, project files may be invalid的解決方法
阿新 • • 發佈:2019-01-06
在搭建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
- VTK + Cmake -> USE_VTK_RENDERING erro
- CMake error: ‘target is not built by this project’
- Cmake link liabray target link error
- CMake 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})
3. 在vs執行
在cmake沒有錯誤之後,我們configure, 然後generate。以管理員的方式開啟vs2017。開啟我們編譯好的檔案。首先
首先我們編譯ALL_BUILD
點選F7,或者是生成就可以了。如果沒有錯誤,右鍵TestVTKInstall將其設定為啟動項,然後點選F5,或者執行就可以輸出正確的結果了。
Over
遇到問題一個個解決就好了。