More export templates
Summary
This MR brings more template exports.
Rationale
This is part of story #1649 (closed).
Implementation Details
CMake mechanism to export all symbols
I had a problem with the export of ITK classes : they are not defined with a proper export macro as we try to do now with extern templates. By default, the compilation of shared libraries in OTB uses -fvisibility=hidden
so that symbols are hidden by default (unless explicitely exported). In order to make ITK symbols visible in OTB shared libraries I had to compile them into a dedicated shared lib, and to disable the hidden
setting. This is done when declaring the module, with the option EXPORT_ALL
, for example, in OTBITK module:
otb_module(OTBITK
ENABLE_SHARED
EXPORT_ALL
DEPENDS
...
New modules with extern templates
The exports in OTBImageBase
and OTBImageIO
have been enhanced.
More extern template
have been added, in modules:
- OTBCommon
- OTBObjectList
- OTBStreaming
- OTBVectorDataBase
- OTBTransform
- OTBITK
- OTBImageExport (new module for ITK templates using
Image
andVectorImage
) - OTBImageManipulation
- OTBStatistics
- OTBVectorDataManipulation
- OTBVectorDataIO
Move implementations into cxx
The implementation of some classes has been moved to a dedicated .cxx
, for instance :
- VectorDataFileWriterException
- ImageKeywordlist
- QtWidgetParameterBase
Additional notes
The export of itkDynamicCastInDebugMode
functions is done in module OTBImageExport
.
TODO : show some figure regarding improvements on build time and binaries size.
TODO : add comments proposed by @poughov
Copyright
The copyright owner is CNES and has signed the ORFEO ToolBox Contributor License Agreement.
Check before merging:
- All discussions are resolved
- At least 2
👍 votes from core developers, no👎 vote. - The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement