(build): evaluate and maybe use VCPKG or find another strategy
Description
Update Conan mechanism has been a wrong path (#601 (closed)), the need to update and ease the maintenance of our third party libraries is still relevant. One possible candidate is to use VCPKG which is a serious contender. Globally, its purpose is the same as conan, providing external libraries used in c++ projects, with a notable difference, they keep one monolithic repositories, with all packages kept coherent with each other.
The goal of this issue is first to evaluate the relevance of VCPKG for our needs, the required work to fill the eventual gaps, and maybe be able to build Sight with VCPKG packages.
Proposal
The issue will be done in several steps, with the aim to not reproduce the same mistake as with conan. So we will try to build part of Sight very soon.
Basic Sight compatibility for core packages for Windows
-
Build / install the required package to build Tuto01Basic
on Windows-
Build / install Boost, Qt (and all dependencies directly available in VCPKG ) -
Create a foreign private recipe (CAMP) and integrate it into VCPKG build tree -
Override a VCPKG recipe (CppUnit), with private changes and integrate it into VCPKG build tree
-
-
Modify Sight to be able to use VCPKG to build Tuto01Basic
on Windows-
Cleanup Sight to remove Conan, to be sure we do not use an old Conan package
-
Full Sight compatibility for all packages for Windows
-
Build / install the required package to build Tuto17SimpleAR
on Windows-
Build / install all packages (Ogre, VTK, OpenCV, ..) (and all dependencies directly available in VCPKG ) -
Report some errors to the community to evaluate the support -
Fix some packages and provide patches to evaluate the support -
Fix Sight Ogre usage (because of the update to Ogre 1.12.9) -
Fix Sight VTK usage (because of the update to VTK 9.0.1)
-
-
Build complete Sight
Linux port
-
Try to do the same as for Windows -
In case of failure, evaluate options: - Invest time to fix problematic packages. Should be easier than Conan as we do not need heavy patch and we don't divert from upstream
- Use only system packages, which means choose the right Linux distribution with uptodate packages and CUDA support
- Use a mix of system packages for basic packages (libPNG, libXML2, ....) and cmake super build / external build for big one (OpenCV, Ogre, Qt, ...)
- another approach like snap packages. => VCPK is not stable enough for our use. We decided to use old "binpkg" (3) and system libraries.
-
Use system package and build minimal package set as "binpkg" reborn.
Links / references
https://github.com/Microsoft/vcpkg