用Qt的MinGW编译VTK9.0.1

CMake与Qt编译VTK9:解决toomanysections错误与内存优化指南
本文详细介绍了如何使用CMake-gui配置编译VTK 9,包括设置BUILD_SHARED_LIBS、安装路径、启用Qt支持,以及针对过大文件的`toomanysections`错误处理方法。着重讲解了针对vtkDataArray的拆分与编译优化,以及解决`memset` undefined reference问题的解决方案。

1 用CMAKE-gui创建编译配置

几个重要的编译参数:

BUILD_SHARED_LIBS    勾选这个生成的是动态库,取消这个生成的静态库
CMAKE_INSTALL_PREFIX,这个值是你要编译生成安装库的路径;
VTK_GROUP_ENABLE_Qt,这个值是否允许Qt,选择Yes,并点击“configure”按钮 
Qt5_DIR,把值改成如:D:/Qt/Qt5.13.0/5.13.0/mingw73_64\lib\cmake/Qt5
CMAKE_BUILD_TYPE  :选择debug还是release,看你需要,一般都需要

2 打开Qt的命令行工具进行编译

输入命令mingw32-make

问题

1 在vtkGenericDataArray和vtkDataArray这两个cxx文件编译时都会出现

会出too many sections 的错误提示

参考qt mingw编译vtk,File too big/too many sections - yangzifb - 博客园 把文件进行拆分,VTK9似乎与8有点不一样,对vtkDataArray如此处理还是有问题。我都拆分出1和2了还是报同样的错,最后在CMakeLists.txt中进行修改。下面的第7行开始的内容。

if(MSVC)
  set_source_files_properties(
    vtkDataArray.cxx
    PROPERTIES
      COMPILE_FLAGS /bigobj)
endif()
  set_source_files_properties(
    vtkDataArray1.cxx
    vtkDataArray2.cxx
    PROPERTIES
      COMPILE_FLAGS -Wa,-mbig-obj)

2 按照上面参考链接,别忘记加上新增的源文件。

set(sources
  vtkArrayIteratorTemplateInstantiate.cxx
  vtkGenericDataArray.cxx
  vtkGenericDataArray1.cxx
  vtkDataArray.cxx
  vtkDataArray1.cxx
  vtkDataArray2.cxx
  vtkSOADataArrayTemplateInstantiate.cxx
  ${vtk_smp_sources})

3 vtkPCAStatistics.cxx文件也有问题,直接在它所在目录的CMakeLists.txt中添加

set_source_files_properties(
	vtkPCAStatistics.cxx

	PROPERTIES
	  COMPILE_FLAGS -Wa,-mbig-obj)

最后,根据自己需要再编译debug和release版本,需要在CMake中进行设置。

4 有的人会遇到undefined reference to `memset’

特别是编译glew.c的时候。

两个解决方法。一个是修改建立的build目录下的 ThirdParty\glew\vtkglew\CMakeFiles\vtkglew.dir 目录,编辑 flags.make文件,增加-minline-all-stringops

 C_FLAGS =   -mwin32 -mthreads -w -w -O3 -DNDEBUG  -minline-all-stringops
第二个方法是修改源代码目录下的ThirdParty\glew\vtkglew\目录中的CMakeLists.txt文件,在最后增加一句 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -minline-all-stringops") 

<think>我们参考引用内容来解答如何使用QtMinGW编译VTK9.4。虽然引用中主要使用VS和MSVC,但我们可以调整步骤以适应MinGW。步骤概述:1.准备工具:安装MinGW、CMake、Qt(使用MinGW版本)和VTK源码。2.配置CMake:指定源码路径和构建路径,选择MinGW作为生成器。3.配置VTK选项:特别是与Qt相关的选项。4.生成Makefile。5.使用MinGW编译和安装。详细步骤:###1.准备工作-**MinGW**:安装MinGW-w64,确保包含gcc、g++、make等工具。建议使用离线安装包或通过MSYS2安装。-**CMake**:下载并安装最新版CMake(3.20+),安装时选择将CMake添加到系统PATH。-**Qt**:使用Qt在线安装器,选择安装MinGW版本的Qt(例如Qt5.15.2MinGW64-bit)。注意:QtMinGW版本必须与你的MinGW编译器匹配(32位或64位)。-**VTK源码**:从VTK官网下载VTK9.4.0源码并解压到某目录(如`D:\VTK\VTK-9.4.0`)。###2.配置CMake打开CMakeGUI:-**Whereisthesourcecode**:浏览选择VTK源码目录(如`D:\VTK\VTK-9.4.0`)。-**Wheretobuildthebinaries**:新建一个构建目录(如`D:\VTK\build-mingw`)。点击“Configure”按钮:-在弹出的对话框中选择生成器(Generator)为“MinGWMakefiles”。注意:如果CMake没有找到MinGW,可能需要手动指定编译器路径(点击“Specifynativecompilers”,然后设置C和C++编译器为MinGW的gcc和g++)。配置过程中可能出现错误,常见问题及解决:-**Qt路径问题**:如果CMake找不到Qt,需要设置`CMAKE_PREFIX_PATH`变量为Qt的安装目录(例如`D:\Qt\5.15.2\mingw81_64`,其中包含lib、include等目录)。-启用Qt支持:在CMake配置列表中,找到并勾选以下选项:-`VTK_GROUP_ENABLE_Qt`:设置为`YES`-`VTK_MODULE_ENABLE_VTK_GUISupportQt`:设置为`YES`-`VTK_MODULE_ENABLE_VTK_RenderingQt`:设置为`YES`(如果需要)-`VTK_MODULE_ENABLE_VTK_ViewsQt`:设置为`YES`(如果需要)-其他常用选项:-`BUILD_SHARED_LIBS`:默认为`ON`(构建动态库),如果希望静态库则设为`OFF`。-`VTK_BUILD_EXAMPLES`:如果需要示例,设为`ON`。-`CMAKE_INSTALL_PREFIX`:设置安装目录(如`D:\VTK\install-mingw`)。点击“Configure”直到没有红色条目,然后点击“Generate”生成Makefile。###3.编译和安装打开命令行(如MinGW的shell或Windows命令提示符,确保MinGW的bin目录在PATH中)并进入构建目录:```bashcdD:\VTK\build-mingw```使用MinGW进行编译:```bashmingw32-make-j4#-j4表示使用4个线程,根据CPU调整```编译完成后,执行安装:```bashmingw32-makeinstall```###4.测试可以编写一个简单的VTK+Qt程序测试。在QtCreator中新建项目,并在.pro文件中添加VTK库的路径和链接库。例如:```proINCLUDEPATH+=D:\VTK\install-mingw\include\vtk-9.4LIBS+=-LD:\VTK\install-mingw\lib-lvtkCommonCore-9.4-lvtkGUISupportQt-9.4...#根据实际需要的库添加```注意事项:-确保QtCreator使用MinGW套件(Kit)。-如果运行时出现缺少dll,将MinGW的bin目录和VTK安装目录的bin目录添加到系统PATH,或复制相关dll到可执行文件目录。引用中提到的QtCreator代替CMakeGUI[^1]是指使用QtCreator内置的CMake支持进行配置和编译,但步骤与CMakeGUI类似。在QtCreator中打开CMakeLists.txt,然后配置生成器和变量即可。§§相关问题§§1.使用MinGW编译VTK时如何解决常见的依赖问题?2.如何配置QtCreator来使用编译好的VTK库?3.VTKMinGW环境下与MSVC环境下的性能差异有哪些?</think>### 使用 QtMinGW 编译 VTK 9.4 的详细步骤 #### 一、准备工作 1. **安装工具** - **MinGW-w64**:下载并安装 [MinGW-w64](https://sourceforge.net/projects/mingw-w64/)(选择 `x86_64-posix-seh` 版本) - **Qt 5.15.2+**:通过 [Qt 在线安装器](https://www.qt.io/download) 安装 **MinGW 64-bit** 组件 - **CMake 3.20+**:从 [CMake官网](https://cmake.org/download/) 下载并安装 - **VTK 9.4 源码**:从 [VTK GitHub](https://github.com/Kitware/VTK/releases) 下载 `VTK-9.4.0.tar.gz` 并解压 2. **配置环境变量** 将以下路径添加到系统 `PATH`: ```bash MinGW\bin # 例如 D:\mingw64\bin Qt\Tools\mingw...\bin # 例如 D:\Qt\Tools\mingw810_64\bin CMake\bin # 例如 D:\CMake\bin ``` --- #### 二、CMake 配置 VTK 1. **启动 CMake GUI** - **Where is the source code**: 选择 VTK 源码目录(如 `D:/VTK-9.4.0`) - **Where to build the binaries**: 新建构建目录(如 `D:/VTK-build-mingw`) 2. **配置生成器** - 点击 `Configure` → 选择生成器 **MinGW Makefiles** → 指定 `Native Compilers` - **C**: `D:/mingw64/bin/gcc.exe` - **C++**: `D:/mingw64/bin/g++.exe` 3. **关键配置选项** | 选项 | 值 | 说明 | |---|---|---| | `BUILD_SHARED_LIBS` | `ON` | 构建动态库(推荐) | | `VTK_GROUP_ENABLE_Qt` | `YES` | 启用 Qt 模块 | | `VTK_MODULE_ENABLE_VTK_GUISupportQt` | `YES` | Qt GUI 支持 | | `CMAKE_PREFIX_PATH` | `D:/Qt/5.15.2/mingw...` | Qt 安装路径 | | `CMAKE_INSTALL_PREFIX` | `D:/VTK-9.4-mingw` | 安装目录 | | `VTK_QT_VERSION` |
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值