metric-space-ai/metric

Handling 3dparty dependencies

Opened this issue · 0 comments

Currently metric framework storse all the dependencies in 3dparty folder as modified copies. It has some disadvantages:

  1. Hard to update, because we need to copy the sources and modify them
  2. No information about versions
  3. There is no options to use system libraries or local copies.

Modern CMake provides https://cmake.org/cmake/help/latest/module/FetchContent.html that can download and compile all the needed dependencies automatically. Moreover the framework could have some CMake variable to switch itself to system libraries so that a user doesn't need to download and build them repeatedly in CI/CD pipelines.

To do:

  • Add fetch content option
  • Add external option

For libs:

  • blaze
  • nlohmann json
  • cereal