I agree with you
Sometimes to solve my issues I need to modify Slicer’s External_smth.cmake
.
In this case I prepare modified by me External_smth.cmake
(in SlicerCAT/CMake
dir) and during configuration time I copy this file to slicersources-src/SuperBuild/External_smth.cmake
thus replacing Slicer’s original file:
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/CMake/External_VTK.cmake"
"${slicersources_SOURCE_DIR}/SuperBuild/External_VTK.cmake" COPYONLY
)
I can’t do this know (I’m sorry) but in the future some of those dirty solutions should be implemented as a PRs (like with HDF5).
Just in case some of my propositions (for the future):
- either build HDF5 as external project or add an opportunity to find HDF5 through HDF5_ROOT (probably easier to handle HDF5 versions) var (requires to modify VTK and ITK ext projects). Modified External_VTK.cmake and External_ITK.cmake
- ITK uses Eigen as third party libs. Add
mark_as_superbuild Eigen3_INCLUDE_DIR
to ITK ext project to link to Eigen. Because if some of ext proj also downloads Eigen and these Eigen libs are of different versions then you may face a problem when the compiled lib uses different Eigen libs in the same function for example. It is difficult to trace (I encountered that) -
sqlite
is very popular library and it should be built as shared library. It is pretty often that sqlite is a dependency of some project. For now onlypython
uses sqlite. Just in case I prepared shared sqlite project (probably it could be done a little cleaner but it works) and the modified External_sqlite.cmake. And probablysqlite
should better be renamed toSQLite3
as CMake prefers