ubuntu 安装vtk-8.2.0问题

VTK安装包是在官网下载的,在make编译过程中,遇到这两个问题:

1、error multiple definition of `exodus_unused_symbol_dummy_1`

2、error aggregate ‘QPainterPath path’ has incomplete type and cannot be defined

针对error1的解决方案

1. error1: multiple definition of `exodus_unused_symbol_dummy_1`

        需要对安装包里面的2个文件进行修改。

  1.1  文件1路径:VTK-8.2.0/ThirdParty/exodusII/vtkexodusII/src/ex_create_par.c

        在最后一行,修改如下:

//const char exodus_unused_symbol_dummy_1; 这是原文件中的内容;
const char exodus_unused_symbol_dummy_ex_create_par; //修改为这行代码

  1.2   文件2路径:VTK-8.2.0/ThirdParty/exodusII/vtkexodusII/src/ex_open_par.c

        在最后一行,修改如下:

//const char exodus_unused_symbol_dummy_1; 这是原文件的代码
const char exodus_unused_symbol_dummy_ex_open_par; //修改为这个

  1.3   (可选)文件3路径:VTK-8.2.0/ThirdParty/exodusII/update.sh

        参考里面提到了需要对此文件中的修改。在文件的第10行:

//readonly tag="for/vtk-20191230-7.24f-v2019-12-18" //这是原代码
readonly tag="for/vtk-20200128-7.24f-v2019-12-18" //修改为这行代码

        我只修改了前两个文件,并没有修改第3个文件,重新make编译发现不报error1的错误,但出现了下面error2的错误。

针对error2的解决方案:

2.  error2: aggregate ‘QPainterPath path’ has incomplete type and cannot be defined

        这个问题解决相对简单,只需要对两个文件修改

  2.1 文件1路径: VTK-8.2.0/Rendering/Qt/vtkQtLabelRenderStrategy.cxx

        在文件中的头文件位置处加入"#include <QPainterPath>"后保存即可

/*
#include <QImage>
#include <QMap>
#include <QPainter>
*/

#include <QPainterPath>//复制这行代码添加到文件中即可

/*
#include <QPair>
#include <QPixmap>
#include <QTextDocument>
*/

  2.2   文件2路径: VTK-8.2.0/Rendering/Qt/vtkQtStringToImage.cxx

        在文件中的头文件位置处加入"#include <QPainterPath>"后保存即可

/*
#include <QFontMetrics>
#include <QImage>
#include <QPainter>
*/


#include <QPainterPath>//加入这行代码即可

/*
#include <QPixmap>
#include <QString>
#include <QTextDocument>
*/

做完以上这些再次重新编译make可以发现100%完成。

最后记得sudo make install,便可以在usr/local/include和usr/local/lib 都可以找到已经完成安装的vtk。

参考:

[1] ​​​​​​Exodus gcc 10 support (!6420) · Merge requests · VTK / VTK · GitLab 

[2] Qt 5.15 needs the include file QPainterPath (797f2869) · Commits · VTK / VTK · GitLab