Happy 20th Birthday CMake!
CMake is now 20! Kitware posted yesterday an interview with Bill Hoffman, the original creator for CMake and shared that August 31 was CMake’s 20th birthday
Here, in the C++ team, we are not only heavy CMake users. We also believe that CMake is a foundational piece for all C++ cross-platform developers and, as such, we strive to enable the best CMake experiences in both Visual Studio and Visual Studio Code.
A lot of the work we do in Visual Studio and Visual Studio Code wouldn’t be possible without the hard work on CMake toolability from the folks over at Kitware. So if you use these capabilities, join us in congratulating Bill and everyone in the Kitware team on this important milestone. Happy birthday CMake!
Microsoft C++ Team
I just wish the information on CMake was up to date – it is very tricky to do projects right with it. Especially when it comes to anything more complex than a sample project (using 3rd party libs which are not using CMake, modular projects, cross-platform build options, etc.)
We are working on this. We have created a new infrastructure for “guides” in CMake. This allows tested examples to be included in the documentation. Here is where you can see the most recent versions of them: https://cmake.org/cmake/help/git-master/index.html#guides. This is also a good resource https://crascit.com/professional-cmake/. CMake has certainly changed a lot over the years, and I hope to focus some effort in the next year on cleaning up the documentation to match the new features.
To me that echo’s one of the complaints about C++. We can’t they just make it simple and fix it! I think the same anserws apply, why is C++ still dominate relative to say D or Rust, although Rust is getting bigger, https://fossbytes.com/most-popular-programming-languages/. Sure you can do a “better” CMake and people have but they still have tiny users bases.
Anayway happy 20th, looking forward to the next 20!
I think you are using the wrong tool. CMake is primarily too build software, not to be a complete Build System, or a package manager. For full cross-platform development, look for Buildroot, if you want to work with full images. Yocto may be your choice if you want to deliver packages, instead of full system images. Linux standard distros may be your choice if you want to start from a ready built Linux system, and develop on top of that (for instance, you create your deb packages…). On Windows side, chocolatey for package management, or Build Systems like Conan and VcPkg.
Most of those solutions use CMake, Conan indeed is a python based build system heavily using CMake.
So, you are looking for a Build System. Do not try to write gazillions of CMakeLists.txt, one calling another, to build your whole system. This is the equivalent of writing those big Makefiles to build-it-all, or create a big sln file to build-it-all, and both are not modular and should be avoided for big projects, where modularity improves everything.
Thank you for your post. Valuable information. http://www.unclehouse.org/