AliceVision
AliceVision copied to clipboard
Allow using all pipeline nodes from a single executable
This will make it possible to compile the reusable parts of the executables once and then link into whatever destination needed, be it a part of user application, a standalone executable or a shared library.
Ability to not require usage of multiple executables is especially important on certain mobile platforms where this is not supported.
The idea behind the implementation is relatively simple: all aliceVision executables are compiled through a single CMake function (alicevision_add_software) and all entry points of these executables are already named as aliceVision_main. If alicevision_add_software is modified to compile the reusable code as a static library and redefine aliceVision_main to a unique symbol, then all of such static libraries can be easily combined into a single executable.
The current solution is the minimal one and the most simple one (whole PR is only around a hundred of lines). Going into the future we can expose the pipeline nodes better and provide more user-friendly API.