As NormandC has pointed out FreeCAD doesn't need, nor uses OCCT with USE_VTK. In the official Debian/Ubuntu repos packages are usually built with every available option.
From my point of view, it would be inconvenient including dependency from VTK to "entire" OCCT package, since VTK support is an extension for OCCT introducing a couple of new libraries, not core functionality.
Here is a set superficial overview of OCCT 3rdparties:
- FreeType, mandatory for Visualization module.
Used directly by TKService and TKOpenGl toolkits.
Required by visualization for drawing text labels.
Also can be used for adding text into model as geometry (TopoDS_Shape), e.g. by using Font_BRepTextBuilder class.
- FreeImage, optional, but still very useful dependency for Visualization module.
Used directly by TKService toolkit for image import/export from/to external formats.
Main use cases - loading textures for OCCT 3D Viewer and creating an image dumps,
but it can be used by applications for working with images independently from OCCT 3D Viewer.
Applications can avoid this dependency by using own image import/export routines
(e.g. reusing image plugins provided by Qt and implemented within QImage class).
- gl2ps, optional for Visualization module.
Used directly by TKOpenGl toolkit for dumping OCCT 3D viewer content into vector formats (svg/pdf) using deprecated OpenGL functionality.
Applications should avoid using this deprecated functionality, but it is harmless and low-weight.
- Tcl/Tk, mandatory for Draw Harness module.
- Intel TBB, optional for several modules.
It is NOT mandatory for activating parallel algorithms in OCCT,
but can be more efficient for this task then built-in OCCT parallelization routines (OSD_Parallel).
- VTK, optional for Visualization module.
This dependency does NOT add any new functionality to existing OCCT toolkits.
Instead, it ADDs a couple of new toolkits to another two OCCT modules - TKIVtk to Visualization module and TKIVtkDraw to Draw Harness module.
Considering this dependency list, it does not look reasonable building OCCT with all dependencies just for completeness, and it is a tricky point to split OCCT into Debian packages.
Ideally for application will be putting every single OCCT toolkit into dedicated Debian package, so that application will not require installing unused components. For instance, TKService might be useful for applications not using OCCT 3D Viewer; and particular Draw Harness plugins should depend only on corresponding toolkits from other modules - otherwise Draw Harness as module would depend on entire OCCT. So as TKIVtk, which will be useful only for a small number of applications, which would like using VTK as visualization toolkit, but don't want using TKOpenGl.
Spitting into modules can be done as meta-packages for simplifying installation for new users, while properly packaged application will depend only from libraries necessary for their work. Like in case of FFmpeg project defining independent packages for each library and application (ffmpeg, libavcodec, libswscale, libavutil, libavformat and others).
Code: Select all
FoundationClasses TKernel TKMath
ModelingData TKG2d TKG3d TKGeomBase TKBRep
ModelingAlgorithms TKGeomAlgo TKTopAlgo TKPrim TKBO TKBool TKHLR TKFillet TKOffset TKFeat TKMesh TKXMesh TKShHealing
Visualization TKService TKV3d TKOpenGl TKMeshVS TKIVtk TKD3DHost
ApplicationFramework TKCDF TKLCAF TKCAF TKBinL TKXmlL TKBin TKXml TKStdL TKStd TKTObj TKBinTObj TKXmlTObj TKVCAF
DataExchange TKXSBase TKSTEPBase TKSTEPAttr TKSTEP209 TKSTEP TKIGES TKXCAF TKXDEIGES TKXDESTEP TKSTL TKVRML TKXmlXCAF TKBinXCAF
Draw TKDraw TKTopTest TKViewerTest TKXSDRAW TKDCAF TKXDEDRAW TKTObjDRAW TKQADraw TKIVtkDraw DRAWEXE
Of course, in case of OCCT it will be more massive list.
But relying on OCCT service files, this list can be generated.