1. 程式人生 > >VS2013+CMake+VTK-8.1.0編譯

VS2013+CMake+VTK-8.1.0編譯

1. 資料準備

1.1 VTK原始碼

這裡需要使用VTK的原始碼,可以在這裡去下載對應版本的原始碼包。

1.2 CMake

官網下載CMake Windows安裝版本
CMake

2. CMake生成VS工程

解壓VTK的安裝包到一個目錄下,之後開啟CMake將source code選項定位到該位置
這裡寫圖片描述
最後點選“Configure”,選擇好編譯器
這裡寫圖片描述
等待其生成完成之後,就會出現下面這個樣子的介面
這裡寫圖片描述
下面是對這些引數的解釋,PS: 這裡沒有編譯其它程式語言的介面
BUILD_EXAMPLES —預設是關閉的,如果開啟這個選項,則會編譯VTK例子,同時VTK編譯所需的時間也較長,佔用的磁碟空間也較大。對於初學者來說,建議把這個選項開啟。
BUILD_SHARED_LIBS

—預設是關閉的,意味著VTK是靜態編譯;如果開啟這個選項,則是動態編譯。
BUILD_TESTING —預設是開啟的,表示會編譯VTK的測試程式。VTK裡每個類都有對應的程式檔案對該類進行測試,對於初學者而言,可以關閉掉這個選項,後續如有需要,可以再開啟此選項。
VTK_DATA_ROOT —指向VTKData所在的路徑。一般情況下,VTK能夠自動搜尋到,如果沒有搜尋到可以手動輸入,在執行VTK的例子時需要用到這些資料。
CMAKE_INSTALL_PREFIX —這個選項表示VTK的安裝路徑,預設的路徑是:C:/Program Files/VTK。該選項的值可不作更改,按預設值即可。
VTK_USE_QT
—是否使用Qt。在這個系列裡,我們使用Qt作為GUI開發工具,所以勾上該選項。
VTK_WRAP_JAVA、VTK_WRAP_PYTHON、VTK_WRAP_TCL —這三個選項是供準備使用Java、Python或者Tcl語言開發VTK工程的使用者選擇的。VTK由兩個子系統組成,分別是C++類庫和提供給Java、Tcl和Python來操作該類庫的直譯器工具,如果勾上以上三個選項,即會編譯這些直譯器工具。
BUILD_DOCUMENTATION —預設是關閉的,如果開啟這個選項,則會編譯VTK幫助文件,由於這個文件VTK已提供下載,所以可以不選。
VTK_USE_GUISUPPORT — VTK是否支援GUI,Windows下如果需要使用MFC開發的,需要勾選上這個選項。本教程在演示的時候也會把這個選項勾選,如果你確定不使用MFC,可以不用選擇該選項。這個在8.1的版本里面沒有了,選擇有MFC的就可以了

配置好引數之後,再次點選“Configure”按鈕,之後點選“Generate”按鈕,得到
這裡寫圖片描述
之後就可以看到生成的VS工程了
這裡寫圖片描述
雙擊開啟該工程

3. 編譯VTK

開啟工程檔案之後選擇”解決方案管理器“,選擇ALL_BUILD工程,選擇
這裡寫圖片描述
當在編譯MFC的時候出現瞭如下的錯誤:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(369,5): error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information.

對於這個問題是字符集的問題,可以通過官方下載這個進行解決。裡面提供了VS2013和VS2015版本的下載連結
還有一個問題就比較坑了,是VTK原始碼的問題:

Error   2   error C2661: 'vtkOpenGLRenderWindow::GetPixelData' : no overloaded function takes 5 arguments   D:\VTK-8.1.0\GUISupport\MFC\vtkMFCWindow.cpp    195 1   vtkGUISupportMFC

函式是需要6個引數,但是呢只提供了5個,這蛋疼的。。。-_-||,也就是下面這樑行程式碼

unsigned char *pixels =
    this->pvtkWin32OpenGLRW->GetPixelData(0,0,size[0]-1,size[1]-1,0,0);

官方的論壇上也有人發帖進行詢問,這是網址
這裡寫圖片描述
這坑爹的希望快點解決吧,ps:在後面加一個引數0倒是可以通過編譯-_-||,正不正確那就不知道了
這個部分需要些時間,可以離開座位伸展下老腰-_-||。之後就可以看到編譯成功
這裡寫圖片描述
安裝VTK,也是在“解決方案管理器”裡面選擇INSTALL工程
這裡寫圖片描述
這個編譯就很快了
這裡寫圖片描述
最後得到的結果
這裡寫圖片描述
大概有200多M的樣子