Expanding the external code dependencies of FDB

Use a b-tree instead of a SkipList #2745 wishes to include Abseil into FDB (in this instance, for a BTree container). I’ve previously copied absl::stacktrace by copy-paste into platform/. I have an eye on bringing replxx into our codebase as Fancy CLI Library v2.

This all brings up two large questions:

  1. Are there any objections to including Abseil into FDB as the Large Supporting C++ Library Of Choice (as opposed to Folly, or … something else?)

  2. What is the most idiomatic way to include this in our project? Git submodules is an easy answer, and will require changing our build instructions and automation. Boost is currently set up as a CMake FindBoost that locates an external copy or downloads a release. Should we do the same for all other projects?


git submodules are super painful in my experience, so I am kind of opposed using this.

An additional option would be using a package manager (for example vcpkg or conan).

I evaluated conan quite a while ago and it was painful and created more problems than it solved. We could evaluate package managers again, maybe there is something that we like.

Of all solutions currently available I like the cmake solution best (find dependency on the system and use that or use ExternalProject_add if it was not found). The main drawback is that it involves some work adding a dependency. But imho this is a feature, if adding dependencies is super easy, we will soon build against every C++ library out there (and become Java :wink: )

1 Like