Hi Devs! The CMake build system for Mesos is now complete enough for wider consumption. The plan is to review all the differences between the CMake and Autotools build systems and eventually deprecate the Autotools build system.
A few of us are already using CMake exclusively for development. But we'd like to have more developers using it *before we start talking about deprecation*. Here is a summary of the known differences: Missing features: * CMake does not build Java artifacts at the moment. Since the most widely-used frameworks (Aurora, Marathon, etc) rely on this, we will prioritize getting this done. * CMake currently does not let you specify the exact system dependency to use. i.e. --with-ssl=... --with-boost=... etc. Instead, CMake either uses the bundled versions or automatically finds the system locations. This is a blocker for CMake adoption by DC/OS. * CMake does not have an install target at the moment. One of the top priority things to get done. * CMake does not build the port isolator module at the moment. * CMake does not have an option to install the module dependencies at the moment. * CMake does not work on FreeBSD at the moment. Features left out on purpose: * CMake does not generate artifacts for Python. We feel the Autotools deprecation will likely run near/alongside the push towards using the V1 HTTP APIs. And there is already an HTTP API library for Python: https://github.com/douban/pymesos * CMake does not build the old CLI executables (src/cli/mesos.cpp and src/cli/resolve.cpp) under the assumption that we will replace those in the near future. * CMake does not support installing test binaries, because the feature appears to be unused. New features: * CMake builds on Windows! * CMake supports packaging sources. For example, you can do `cmake .. && make package_source` to generate the autotools equivalent of `make dist`. * CMake supports packaging binaries. For example: * To generate debs and rpms: `cmake .. -DCPACK_BINARY_DEB=1 -DCPACK_BINARY_RPM=1 && make package` * On Windows, to build a graphical installer: `cmake .. -DCPACK_BINARY_NSIS=1 && make package` * On OSX, to build .dmg and interactive installers: `cmake .. -DCPACK_BINARY_OSXX11=1` and `-DCPACK_BINARY_DRAGNDROP=1 && make package` * More granular build targets. For example, if you're working on libprocess, you can use `make libprocess-tests` instead of babysitting `make check`. * [Upcoming] Precompiled headers, which should speed up the build dramatically. * [Upcoming] We will be combining some aspects of Mesosphere's OSS packaging repo [1] so that binary packages will contain service definitions, as well as binaries. Please let us know if you have any comments, concerns, or requests! And please do try it out: cmake .. && cmake --build . The JIRA tracking the CMake build system is here: https://issues.apache.org/jira/browse/MESOS-898 Thanks! ~Joseph [1] https://github.com/mesosphere/mesos-deb-packaging