Transition to VTK 8.0

Hi All,

Just to let you know we are working on updating the version of VTK used in Slicer to use the latest VTK version. As soon as a branch is ready for testing, I will follow up here.

It will include the follow steps:

3 Likes

It would give more time for testing and extension developers for updating if we temporarily make Slicer and extensions compatible with both VTK7 and VTK8 with (using #ifdefs, similarly how we did it for VTK5->VTK6 transition).

“This also means, beginning version 8.0.0, VTK requires a C++11 capable compiler to compile”

@jcfr can you please comment whether C++11 will be enabled for VTK compiled with Slicer?

Look like we will have a CMake option to choose one or the other.

Will comment later. Depending on what require c++11, we may add this requirement at a later time and patch Slicer/VTK fork.

Here is an update:

  • when building Slicer against Qt4, VTK 7.1 is used and C++98 is selected

  • when building Slicer against Qt5, VTK 8 is used and C++11 is selected

Regarding

Actually, it wouldn’t be completely crazy to go straight to C++14…

  • Windows: in the past, Visual Studio was always lagging, but we will be requiring MSVC19 (Visual Studio 2015) anyway, which supports everything in C++14.

  • Mac: Clang has supported everything in C++14 for more than two major releases.

  • Linux is the wildcard, because of old clusters. However, they are not any worse off than will be with C++11 – they have to use devtoolset or the equivalent anyway.

@pieper @lassoan

I would try to be as close to VTK as possible and switch to c++14 shortly after VTK switches.

I’m wondering if we should create a Slicer 4.8.1 patch release based on the latest trunk version (maybe excluding a few risky changes, if there were any), just before we switch to VTK8. There have been a couple of fixes and improvements that would be good to have in the stable version.

1 Like

Hi Slicers,

To streamline the maintenance, support for Slicer_VTK_VERSION_MAJOR=8 has been removed in r26710

What does this mean for existing build tree ?

Three cases:

  • Qt4: if you are building against Qt4: no action required.

  • Qt5: if you have done a clean build since November 15 (when r26634 was integrated), you are all set.

  • Qt5: if you have NOT done a clean build, now is the time to do so. Otherwise, you will get an error message like ``.