ParaView (vtkm) build issue with windows/vs2017

Using cmb-superbuild:master, a strange error occurred building a third-partly lib, taotuple, under vtkm. The message is that the std::swap function does not take 1 argument. @ben.boeckel can you advise on this?

cl : Command line warning D9025 : overriding '/W4' with '/W3'
c:\users\johnt\documents\ace3p\build\dev-superbuild\superbuild\paraview\src\vtk\thirdparty\vtkm\vtkvtkm\vtk-m\vtkm\thirdparty\taotuple\vtkmtaotuple\include\tao/tuple/tuple.hpp(104): error C2660: 'std::swap': function does not take 1 arguments
C:\Users\johnt\Documents\ace3p\build\dev-superbuild\superbuild\paraview\src\VTK\ThirdParty\vtkm\vtkvtkm\vtk-m\vtkm/cont/ArrayHandleDecorator.h(327): fatal error C1903: unable to recover from previous error(s); stopping compilation

Aside, there are also numerous warnings about /W4 vs /W3 that appear in many places.

I recommend pinging Rob and/or Allie about this.

For those interested, the issue is resolved:

  • The compile error occurs using VS2017 Version 15.0.26228.96 which, per this microsoft page, was released August 13.
  • Per this stackoverflow note, the “15.0” versions are the long-term-support releases that only include hot fixes. The other 15.x versions include both hot fixes and feature updates.
  • And, sure enough, the compile error does NOT occur using the latest, not-long-term-support VS2017 (Version 15.9.17), which was released October 15. Evidently the source line in tuple.hpp requires a feature update that is not in the baseline VS2017. Go figure.
  • Aside, because I am moving to VS2019 for future windows builds, the point has probably become moot. Nonetheless, my thanks to Rob & Allison for helping solve the mystery.

Progress for me - I’m able to complete a superbuild and an smtk build with VS2019 (and external QT 5.12). However, when I try to run tests in smtk, the unittests all fail with Exit code 0xc0000135.
I have not investigated further.

Windows is a tricky beast. You need to set your path correctly in order to run unit tests. For example, Kerbin’s environment for testing SMTK is as follows:

    'slaveenv': {
        'PATH': 'C:/Qt/Qt5.9.1/5.9.1/msvc2015_64/bin;C:/d/data/smtk/developer/bin;C:/d/smtk/developer/lib;C:/d/data/smtk/developer/x64/vc14/bin;${PATH}',
        'PYTHONPATH': 'C:/d/data/smtk/developer/bin/Lib;C:/d/data/smtk/developer/lib/site-packages',
    },

OK, now we have a customer that has a bug that only reproduces on windows. So I installed the VS2019 redistrubutable (even though I have VS2019 installed) and it solved the missing DLLs running ctest from bash. I am not able to run python tests from inside ctest - however, I can set PYTHONPATH and run the command by hand successfully.

I have a superbuild build at d:/akit/cmb/sb/build and an smtk developer build at d:/akit/cmb/smtk/build, here’s what I set in bash:

export PATH="/d/akit/cmb/smtk/build/bin:/d/akit/cmb/sb/build/install/bin:${PATH}"
export PYTHONPATH="D:/akit/cmb/sb/build/install/bin/Lib/site-packages;D:/akit/cmb/sb/build/install/lib;D:/akit/cmb/sb/build/install/bin;D:/akit/cmb/smtk/build/bin/Lib/site-packages"

( the Kerbin env doesn’t make sense to me - I only have bin/Lib/site-packages…)