项目环境: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 版本
- 下载网址 https://www.visualstudio.com/downloads/download-visual-studio-vs
- 选择 visual studio 2013 -> Community 2013
-
下载和安装社区默认位置和默认可选功能 (大约要半个小时才能完成)
2. 安装 DXSDK_Jun10
- 下载网址 http://www.microsoft.com/en-ca/download/details.aspx?id=6812
- 下载 DirectX Software Development Kit (DXSDK_Jun10.exe)
3. 安装它的默认位置和默认的可选功能
3.安装 cmake-3.3.2-win32-x86
- 下载网址 https://cmake.org/download/
- 下载 cmake-3.3.2-win32-x86.exe
3.安装在默认位置
4. 选择 ”Add CMake to the system PATH for current user”
4. 安装 Qt5.7
- 下载网址 https://download.qt.io/official_releases/qt/
- 下载 Qt5.7 for Windows 64-bit (vs2013)
3. 安装
4.确保选择所有组件
5.安装完成后,不要打开Qt,只要关闭窗口即可
5. 安装 qt-vs-addin-1.2.4-opensource
- 下载网址 https://download.qt.io/official_releases/vsaddin/qt-vs-addin-1.2.4-opensource.exe.mirrorlist
- 下载 qt-vs-addin-1.2.4-opensource.exe
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
1)下载网址 http://www.vtk.org/download/
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