On 28 Nov 2014 at 11:15, Robert Ramey wrote:
In boost we are currently having working on (and having difficulty with) dependency managment. We don't yet have any formal requirements for library versions (vs boost versions) - but I think we will have to move there eventually. I see this as another step in boost modularization.
FYI BindLib implements API and optional ABI version management. You use binds to hard bind a specific dependency to a specific API version. Different libraries in the same translation unit can bind to different versions of the same dependency. For dependency management, you're probably not going to like my solution as I don't either, but essentially you git submodule all your library dependencies into your include directory, so library/include/boost/library/submodule. You then go ahead and use them directly, so instead of: #include "boost/spinlock/spinlock.hpp" you do: #include "spinlock/include/boost/spinlock/spinlock.hpp" You probably now wonder isn't this very wasteful having every Boost library keep its own git submodules of other boost libraries? Well, it turns out that git spots you doing that, and only keeps a single copy of every git submodule no matter how frequently used. Therefore, this solution lets your library run standalone AND correctly "symlink" to the appropriate Boost library when being used from within Boost. The only cost is much increased checkout disc space really and that it takes a good while longer to submodule update, and I'm sure some future actual symlink solution as part of b2 headers could fix that too. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/