VS2013配置VTK7.1.1
作為一個新手小白,這兩天配置VTK出現了各種問題,解決過程中極其痛苦,將配置過程記錄下來。
1、安裝VTK
VTK可以從http://www.vtk.org/download/ 網站免費下載,一般只需要下載VTK原始檔壓縮即可,如果需要使用樣例資料,還需下載VTK資料壓縮包。此外,還要用到CMake工具,可以從https://cmake.org/download/ 免費下載。
1)將VTK原始碼包解壓到D:Program Files\VTK目錄下。
2)將VTK資料包解壓到D:Program Files\VTK\VTKData目錄下。
注:VTK目錄和VTKData目錄是自己建立的,可以自行指定位置,可以是任何名字,但是最好不要使用中文命名,以免出現問題。
2、安裝CMake
安裝CMake是和普通的程式安裝沒有任何區別,只有一步需要稍微說明一下。當詢問是否將CMake新增到系統路徑,預設是不新增的,這主要是為那些習慣命令列操作方式的使用者準備的。如果想深入瞭解CMake,可以選擇將其新增到系統路徑,但是即使現在不選擇,以後也可以在PATH環境變數中手動新增。
選擇:Add CMake to the system PATH for all users這一項
安裝完成後,開啟CMake,期主介面如圖所示。
1)在Where is the source code:處,單擊按鈕Browse Source,指定VTK原始碼所在路徑,這裡應該是D:\Program Files\VTK。
2)在Where to build the binaties:處,單擊按鈕Browse Build,指定將要生成工程的路徑,這裡選擇D:\Program Files\VTK\bin(bin是新建的目錄)。
3)然後單擊按鈕Configure,開啟如圖所示的編譯器選擇對話方塊。
單擊Finish按鈕關閉編譯器選擇對話方塊,即可啟動配置。這是按鈕Gonfigure變成按鈕Stop,隨時可以中斷配置。
會出來紅色的掃描結果。
下面是比較重要的選項。
CMAKE_INSTALL_PREFIX為預設安裝路徑,也是INSTALL工程生成的地方,系統預設為C:\Program Files\VTK。
Build推薦勾選如下:
BUILD_EXAMPLES:在BUILD分組裡,用來詢問是否生成VTK所帶的例子。不勾選狀態下時可以縮短編譯的時間,需要學習VTK中自帶例程的可以選擇該項。(初學者,建議選擇生成VTK所帶的例子,預設是不選擇的。)
BUILD_SHARED_LIBS:
BUILD_TESTING: 在BUILD分組裡,選中代表編譯測試程式碼。
根據需要對VTK_Group進行勾選:
VTK_USE_GUISUPPORT: 在VTK分組裡,表示是否支援GUI。如果想在MFC應用程式中使用VTK,那麼就必須選擇此項。因為只有開啟這個選項,然後再次點選Configure按鈕才能開啟VTK_USE_MFC選項,需要勾該選項再次進行Configure。如果無法執行VTK中與MFC混合程式設計的例子,提示錯誤都是缺少vtkmfc.lib,問題就出現在這個選項上。建議選擇此項,預設是不選擇的。
TK_USE_MFC:在VTK分組裡,如果已開啟VTK_USE_GUISUPPORT選項,並再次單擊按鈕Configure,才能看到這個選項,建議選擇此項,預設是不選擇的。
我因為沒下QT所以VTK_Group_Qt沒有選擇。
修改完成後重新Configure,直到沒有紅色為止,然後Generate。如下圖所示
。
3、生成VTK
在D:\Program Files\VTK\bin目錄下,找到“VTK.sln”解決方案檔案,雙擊這個檔案,用vs開啟它。右鍵點選ALL_BUILD,選擇重新生成,該步驟耗時較長。
第一次生成後會有一些連結錯誤,比如打不開….\lib\Debug下的vtkViewsInfovisPython27D-7.1.lib檔案,可能是由於生成順序導致,因此再生成一遍,可以減少一部分錯誤。我在生成ALL_BUILD時,沒有出現任何問題,還算是比較幸運的。
生成成功後找到INSTALL專案,右擊選擇僅用於專案->僅生成INSTALL,會在CMAKE_INSTALL_PREFIX設定的目錄下生成include目錄,包含VTK需要的標頭檔案。
在這步生成INSTALL是,就出現了一個問題,錯誤如下。
這個問題通過將VS2013設定為管理員許可權執行就解決了。當時卡在這好久。
4、執行Examples
4.1 CMake編譯
執行CMake
source code,例如:D:/Program Files/VTK/VTK-7.1.1/Examples/Tutorial/Step1/Cxx。
build the binaries,例如:D:/Program Files/VTK/VTKCode/Step1。
第一次configure之後需要填入一些引數,其中VTK_DIR填入VTKConfig.cmake所在路徑,一般情況下是安裝VTK時配置的生成路徑, 即為C:/Program Files/VTK/lib/cmake/vtk-7.1,CMAKE_INSTALL_PREFIX是生成INSTALL.vcxproj的地方,預設是C盤,可以修改到工程檔案生成目錄下,我修改到了目錄D:/Program Files/VTK/Step1下。configure之後generate。編譯之後到工程檔案目錄下D:/Program Files/VTK/VTKCode/Step1,可以找到Step1.sln,開啟之後選擇Cone作為啟動專案進行生成,生成成功即可執行。
4.2 新建專案在編譯
完成之後,建立一個win32控制檯應用程式來測試安裝編譯結果。
開啟vs2013,新建一個win32控制檯應用程式。建立完成之後,向專案中新增一個cpp檔案。隨後配置我們的專案。
在選單欄中選擇檢視->屬性管理器。
由於目前使用的是Debug版本編譯,所以在此我們只需要去設定Debug下的配置檔案。雙擊開啟Microsoft.Cpp.win32.User。
在包含目錄中新增VTK生成目錄下的include資料夾,這裡是C:\Program Files\VTK\include\vtk-7.1。
在庫目錄中新增VTK生成目錄下的lib資料夾,這裡是C:\Program Files\VTK\lib。
在Microsoft.Cpp.win32.User的屬性頁面,開啟連結器,選擇輸入。新增附加依賴項。
CMake設定時沒有勾選VTK_Group_Qt選擇項,編譯的時候出現了錯誤,LINK1104:無法開啟檔案件vtkGUISupportQt-7.1.lib然後把所有帶有**Qt.lib的附加專案刪除之後才可以。但是在編譯的過程中還是出現中斷錯誤。
在程式中加了三行程式碼就可編譯通過
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);