VTK(1)——編譯安裝
專案環境:QT+VTK+CMake
本文使用到的檔案包有:
- visual studio 2013
- DXSDK_Jun10
- cmake-3.3.2-win32-x86
- Qt5.7
- qt-vs-addin-1.2.4-opensource
- TBB (Thread Building Blocks)
- vtk 7.1
1. 安裝 visual studio 2013 Community 版本
2. 安裝 DXSDK_Jun10
3. 安裝它的預設位置和預設的可選功能
3.安裝 cmake-3.3.2-win32-x86
3.安裝在預設位置
4. 選擇 ”Add CMake to the system PATH for current user”
4. 安裝 Qt5.7
3. 安裝
4.確保選擇所有元件
5.安裝完成後,不要開啟Qt,只要關閉視窗即可
5. 安裝 qt-vs-addin-1.2.4-opensource
3. 安裝它的預設位置和預設的可選功能
6. 安裝 TBB (Thread Building Blocks):
- 下載網址 https://www.threadingbuildingblocks.org/download
- 解壓檔案
- 將“TBB\bin”目錄新增到系統環境變數“Path”中
4. 建立一個名為“TBBROOT”的新系統環境變數,將TBB目錄新增到該變數中
7. 設定工作資料夾
- 在d:盤下,建立一個名為 “UlabVTK” 的新資料夾;(命名隨意,不使用中文字元)
- 將 “vtk-7.00” 資料夾移動到 “UlabVTK” 資料夾;
- 在vtk資料夾中新建一個資料夾,命名為“aftermake”;
8.使用CMake編譯vtk
- 下載 vtk 7.1
2)下載最新的 vtk zip file(7.1version)
3)將檔案解壓到vtk資料夾
2. 編譯 vtk 原始碼
1)開啟 CMake
2)設定 “source code” 和 “build the binaries” 的路徑
3)選擇生成器Visual Studio 12 2013 Win64
4)點選 “Configure”
5)完成“配置”後,選擇以下選項;
6)配置後,會出現一些錯誤。按照圖片修改“VTK_QT_VERSION”。
7)然後配置,新增Qt5.7目錄
8)新增TBB(Thread Building Blocks).
①找到“VTK_SMP_IMPLEMENTATION_TYPE”,選擇TBB選項
②然後點選 Configure.
③這裡還有一些錯誤,還需要新增TBB的目錄。
注意:
a)選擇正確的檔案來匹配不同的“名稱”(TBB_LIBRARY_DEBUG和TBB_LIBRARY_RELEASE)
b)選擇intel64和vc12(visual studio 2013)。
④點選 Configure, 新增以下變數地址
TBB_MALLOC_LIBRARY_DEBUG
TBB_MALLOC_LIBRARY_REALEASE
TBB_MALLOC_PROXY_LIBRARY_DEBUG
TBB_MALLOC_PROXY_LIBRARY_RELEASE
以下圖片僅提供參考
9)在“aftermake”目錄中,建立一個名為“bin-lib”的資料夾。
在“CMAKE_INSTALL_PREFIX”的“Name”中填寫“bin-lib”的路徑,如圖所示。
10) 其他 “Name” 是預設的
11)點選configure後,單擊“Generate”。
9. 構建 VTK 專案.(此處用VS方式,QT構建方式參考文末)
- 啟動Visual Studio2013作為管理員模式。
2.找到“VTK。“aftermake”資料夾中的sln檔案,使用visual studio開啟它。
3. 選擇 debug 模式
4.找到“ALL_BUILD”,右鍵單擊,選擇“Build”。
5.找到 “INSTALL”, 右鍵單擊,選擇“Build”.
6. 當構建完成後,不要關閉視窗。轉到之前建立的bin-lib資料夾
在這個資料夾中,您可以找到一些建立的資料夾。建立一個新資料夾“debug”,並將除“debug”之外的所有資料夾放入debug資料夾中。
7. 回到Visual Studio,將構建模式更改為“Release”,並再次構建“ALL-BUILD”和“INSTALL”。
8. 再次進入bin-lib資料夾。在這個資料夾中,您可以找到一些剛剛建立的新資料夾。建立一個新的資料夾“Release”,並將所有其他資料夾(除“debug”資料夾外)放入“Release”資料夾中
9.到這一步就完成了
在系統環境變數中新增
D:\UlabVTK\aftermake\bin_lib\debug\lib\cmake\vtk-6.3
D:\UlabVTK\aftermake\bin_lib\release\lib\cmake\vtk-6.3
注:在此過程中遇到的多個問題在這裡進行備註
問題一
問題:找不到庫檔案
① 找不到vkt-dir庫
② 找不到其他的.dll檔案
場景:用cmake執行vtk示例程式出現找不到庫的情況下,我手動將缺少的庫新增到了環境變數中,經過多次的重新配置環境發現,是其中的環境變數的值配置有誤產生的,此處可以注意兩點
解決方式:
①路徑中 \ 的方向
②路徑是否正確
問題二
1. 問題:cmake檔案編譯與理解
2. 理解Cmake:cmake是幫我們組織工程檔案的,在QT中由qmake幫我們生成的.pro來組織,VS中由.sln來組織。使用cmake組織檔案首先需要一個CMakeLists.txt檔案,注意需要區分檔名的大小寫。(最初接觸vtk時這裡是最難理解的地方)
Cmake維基百科定義:CMake是個一個開源的跨平臺、自動化建構系統,用來管理軟體建置的程式,並不相依於某特定編譯器。並可支援多層目錄、多個應用程式與多個函式庫。
3. CMakeLists.txt檔案原始碼:
cmake_minimum_required(VERSION 2.8)
PROJECT(Test)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
add_executable(Test MACOSX_BUNDLE Test.cpp )
target_link_libraries(Test ${VTK_LIBRARIES})
4. 命令說明:
cmake_minimum_required() : 用於指定構建工程時所需的CMake版本
project(): 用於指定工程名稱
find_package(): 用於搜尋並載入外部工程,引數[REQUIRED]表示所要搜尋的外部工程對本工程來說是必須的,如果沒有搜尋到,CMake會終止整個工程構建過程。
include() : 指定載入一個檔案或者模組,如果指定的是模組,那麼將在CMAKE_MODULE_PATH中搜索這個模組並載入
add_executable() : 定義這個工程會生成一個可執行檔案,使用變數${PROJECT_NAME}的值來指定即將生成的可執行檔案的名字
target_link_libraries(): 指定生成可執行檔案時需要連結哪些檔案
5. 編譯示例(此處僅寫出qt方法,vs編譯方法參見上面vtk編譯過程)
Step1: 編寫CMakeLists.txt檔案(如上)
Step2: 在Qt中開啟示例的CMakeLists.txt檔案
Step3: 右鍵點選專案工程,彈出的下拉列表中選擇執行CMake
Step4: 構建專案
Step5: 執行專案
附VTK相關示例下載地址:
連結: https://pan.baidu.com/s/1ndc24lxgbx0OQ6EoBwj83Q 密碼: 3ap6