On Thu, 2017-01-12 at 02:55 +0300, Egor Pugin wrote:
Hi,
I'm working in the same area, but more globally - dependency management. See [1]. There're a lot of packages already, not only boost. I did a small announcement about CPPAN here (in boost ML) some time ago.
The goal of the cmake modules is to help libraries support the standard cmake process(build, installing, and testing). Once this is setup other third-party tools can take care of installing the packages, or users can install each module manually if they choose.
Cppan tries to manage C/C++ libs with simple declarative syntax (YAML) with ability to include and insert cmake scripts of any complexity. From such description or declaration a complex CMakeLists.txt is generated and then used by CMake. See example of generated file for boost::log [6]. Of course cppan supports including selected deps to your usual CMakeLists.txt project.
It does have a quite extensive list of packages, but one problem I find with most package management tools built for C++ is that it doesn't support the common cmake libraries. I see it has support for Boost.Fit, however, I don't see how I could install my other libraries such as prove or args, without needing extra configuration(I could be wrong about this). With cget, I can install these libraries, plus unrelated libraries like cmark or tensile(which is not supported in CPPAN either), all because it supports the standard cmake flow.
You can find all boost packages here [2]. They are currently is under 'pvt.cppan.demo.boost' namespace - 'private.username.my_demo_directory'. If boost is willing to go to cppan officially, it could create and use organization 'org.boost' namespace ('com.???') is also available. Such naming came from other langs (java, c# and also from future C++Modules proposal). For example, names could be 'org.boost.hana', 'org.boost.asio', 'org.google.protobuf', 'com.intel.tbb', 'com.ibm.whatever', 'org.qt.multimedia', 'org.kde.*' etc. I'm adding boost there since 1.61.0, see [3]. Dependencies is not the strongest boost part because many of libs are header only, so people don't track them properly. I wrote a program to track them automatically [4]. (It builds with cppan only already in script style 'cppan --build main.cpp'.) Cppan specification example is on the page [5].
Actually, Peter Dimov already has tool to find the dependencies, and he has added recently to track the test dependencies. Does CPPAN support building and running the tests? I see it list the dependencies, but it doesn't seem to distiguish between usage, build and test dependencies. Paul