在Windows上编译VTK-9-0-1及其示例

1 准备工作 在Windows下编译VTK需要以下内容: CMake 3.10及以上 Visual Studio及MSVC编译环境 VTK源码 1.1 下载VTK源码 可以在https://vtk.org/download/ 下载VTK的源码、测试数据、文档等内容 其中,VTKData-9.0.1.tar.gz是VTK用于测试的数据,VTKLargeData-9.0.1.tar.gz是VTK部分示例程序所用的数据,这两个文件都可以不用下载,只下载VTK-9.0.1.tar.gz即可。 2 生成VTK 2.1 创建目录 为VTK创建一个文件夹 在文件夹内,创建src和build目录,分别存放源码和生成的文件 将VTK-9.0.1.tar.gz解压到src内 目录结构类似于: c:\data\cpp\vtk\build <--空 c:\data\cpp\vtk\src c:\data\cpp\vtk\src\Accelerators c:\data\cpp\vtk\src\Charts c:\data\cpp\vtk\src\.... 2.2 运行CMake 打开CMake-GUI 选择VTK的源码路径和生成路径 点击“Configure” 选择需要的“generator”,这里选择Visual Studio 15 2017 Win64作为生成器 根据需要调整CMake选项。以下为部分常见的选项: CMAKE_INSTALL_PRFIX:生成的VTK库的安装路径。根据需要选择即可 VTK_BUILD_EXAMPLES:默认为OFF,勾选后生成测试时将一并生成示例代码。由于源码中的测试工程管理不便,且测试资源需要单独下载和配置,这里选择不生成源码中的示例,后续单独克隆VTK的测试代码仓库并生成。 VTK_USE_CUDA:默认为OFF,勾选后开启对CUDA的支持 VTK_GROUP_QT:勾选后将开启对Qt的支持,编译VTK在Qt中的控件类等 再次点击“Configure”进行配置 点击“Generator”生成VS 2017对应的工程 点击"Open Project",这时会调用VS 2017打开CMake生成的工程 2.3 构建 在VS 2017中将配置切换到"Release",右键ALL_BUILD项目,选择“生成”即可。构建完成后,在build/bin/Release下便能看到编译好的动态库文件。 2.4 安装 右键INSTALL项目,选择“生成”即可将VTK相关的头文件、库文件、动态库文件安装到CMAKE_INSTALL_PREFIX指定的位置。安装完成后,目录结构应类似于: c:\program file\VTK\bin c:\program file\VTK\include c:\program file\VTK\lib c:\program file\VTK\share 其中,\bin目录包含了所有的VTK动态库文件,可以该路径加入环境变量。 如果需要更改安装路径,再次打开CMake-GUI更改CMAKE_INSTALL_PREFIX后,重新加载工程生成INSTALL即可 3 生成示例 3.1 示例的来源 如前所言,VTK源码包内已经附带了一些示例程序,这些示例程序旨在以简单一致的格式来说明VTK的一些概念,然而这些例子只涵盖了VTK功能的一小部分。 ...

2020-09-17 · Qiao

如何使用git submodule和git filter-repo从仓库中分离特定目录

碰到了一个这样的场景:同事为了单元测试,将众多测试资源文件提交到了git仓库内,这导致仓库体积陡然膨胀。但另一方面,编写好的测试用例又确实依赖这些测试资源文件。那么,有没有办法能达到以下目标: 分离工程文件和测试资源,以便能够单独管理二者 清洗提交记录,将测试资源在提交历史中“抹去”,以便减小仓库的体积 搜索一番,发现了git submodule和git filter-repo两个工具刚好可以满足这两个需求。 1 git submodule的使用 submodule是git自带的一个工具,详细的介绍参见Git-工具-子模块,这里不再赘述,只简单说明如何利用git submodule满足上述需求。 1.1 从仓库中移除测试资源 假设工程结构如下: ├─MyLib │ ├─include │ └─src ├─MyLibTest ├─assets └─src 其中MyLib为库的工程,而MyLibTest则是MyLib的单元测试工程,测试资源存放在MyLibTest/assets下,也正是我们需要移除的目录。 首先,在git bash中执行 git rm -r --cached MyLibTest/assets 将MyLibTest/assets从git仓库索引中移除,但不实际删除该目录。 关于git rm的使用,参见git-rm 1.2 新建测试资源仓库 新建远程仓库 在git服务器上新建一个仓库,记作MyLibTestResource,用于存放测试资源。 新建本地仓库 新建一个目录,这里记作TestResource,在其中建立git仓库,将MyLibTest/assets中的内容复制到该目录下,随后提交。再执行 git remote add origin git@MyLibTestResource.git #git@MyLibTestResource.git替换为MyLibTestResource的真实git地址 添加远程仓库,随后执行git push推送即可。 1.3 添加子模块 回到MyLib下,执行 git submodule add git@MyLibTestResource.git MyLibTest/assets 添加子模块MyLibTestResource,子模块的内容会同步到MyLibTest/assets下。 1.4 克隆包含子模块的项目 克隆包含子模块的项目有二种方法:一种是先克隆父项目,再更新子模块;另一种是直接递归克隆整个项目。 克隆父项目,再更新子模块 #克隆父项目MyLib git clone git@MyLib.git #git@MyLib.git替换为MyLib的真实git地址 #初始化子模块 cd MyLib git submodule init #更新子模块 git submodule update 递归克隆整个项目 git clone git@MyLib.git --recursive 2 git filter-repo的使用 利用git submodule可以将测试资源从MyLib中分离,但MyLib仓库中仍然记录着测试资源的提交与更改,这导致仓库体积仍然很庞大。那么,如何改写git提交历史,将测试资源相关的提交与更改从历史中“抹去”呢? ...

2020-07-23 · Qiao