Motivation:
A lot of companies are integrating external library dependency management into their build (CI) tool chains. It is necessary to keep track of used compiler versions, propagation of necessary compiler flags, as well as the build configuration of the external library itself. All this can be achieved by conan io, which integrates nicely in the most used build management environments (like cmake, VS-Studio, etc.) and handles correctly multiple platforms like x86_64, M1 Mac, Android, iOS, etc.
In my eyes conan acts already like a de-facto standard here, especially in the cross-compilation world.
Current Situation:
The heavy lifting is already done by the conan community and the opencv package is available on conan io for long-time.
OpenCV is one of the interesting use-cases for cross-compilation and dependency management, especially for conan itself. So the community invested already a lot of effort to handle OpenCV transitive dependencies accordingly for the different platforms. The already existing OpenCV conan package is used for a clean implementation of a complex dependency showing all the necessary features of conan.
The complete current reciepe can be seen here: conan-center-index/conanfile.py at master · conan-io/conan-center-index · GitHub
I personally can ensure that it is possible to run the OpenCV conan builds for an cross-platform native backend on desktop and apps like building:
linux ci x86_64 → linux x86_64
linux ci x86_64 → linux arm aarch64
linux ci x86_64 → android ndk x86, x86_64, armv7, armv8
apple xcode x86_64 → ios x86, x86_64, armv7, armv8
Where i am really thankful that current tooling is able to handle that well.
Problems at the moment
In my eyes it is sad that new updates of OpenCV are taking a lot of time and effort to pin-point transitive dependency changes of OpenCV out after its release. Especially sad is, that the necessary dependency management should be known during development and just updating the conan recipes from OpenCV side itself should involve a lot less effort than doing it externally.
Key benefits of moving to an OpenCV maintained conan package:
reduced maintenance overhead, since transitive dependency changes would be handled directly when they occur during development instead of post release packaging
the latency between opencv releases and the availability in conan can be reduced a lot
the dependency management inside OpenCV might benefit potentially as well organizing it’s own dependencies that way
side-note:
Other large-scale open-source developments with tons of third-party dependencies are migrating also to self-maintained conan packages like Qt: https://bugreports.qt.io/browse/QTBUG-68854
you should browse the issues. you’ll find this… the issue tracker is the right place for that discussion. if you believe it warrants revisiting and you would either keep supporting this yourself or enslave someone to do it, that would help convincing the Intel people that manage OpenCV.