

Modern CMake was originally written by Henry Schreiner. toeb/moderncmake: A nice presentation and examples about CMake 3.5+, with intro to syntax through project organization.Oh No! More Modern CMake: The sequel to More Modern CMake.This talk makes calls CMake 3.0+ "Modern CMake" and CMake 3.12+ "More Modern CMake". More Modern CMake: A great presentation from Meeting C++ 2018 that recommends CMake 3.12+.The Ultimate Guide to Modern CMake: A slightly dated post with similar intent.It's time to do CMake Right: A nice set of best practices for Modern CMake projects.Embracing Modern CMake: A post with good description of the term.Effective Modern CMake: A great list of do's and don'ts.It just doesn't have a great "best practices tutorial", which is what this book tries to fill in. Nicely organized, great search, and you can toggle versions at the top. The official help: Really amazing documentation.There are some other places to find good information on the web. Other material from the original author of this book: This book tries to solve the problem of the poor examples and best practices that you'll find proliferating the web. It's easy (1-2 lines in many cases), and you'll find that 5 minutes of work will save you hundreds of lines and hours of CMakeLists.txt writing, and will be much easier to maintain in the long run. You really should at least use a version of CMake that came out after your compiler, since it needs to know compiler flags, etc, for that version.Īnd, since CMake will dumb itself down to the minimum required version in your CMake file, installing a new CMake, even system wide, is pretty safe.
Cmake include all but series#
1Įven though every version of CMake is insanely backward compatible, the 3 series was treated as if it were something new.Īnd so, you'll find OSs like CentOS7 with GCC 4.8, with almost-complete C++14 support, and CMake 2.8, which came out years before C++11. I believe that CMake 3 had the bad luck to follow Python 3. I know, this should have nothing whatsoever to do with CMake.Īnd it was a hard, ugly, transition that is still ongoing in some places, even today. It was in most of the package managers for Linux OS's, and was being used in lots of packages. Why use a Modern CMake?Īround CMake 2.6-2.8, CMake started taking over. So, if you use a library that is designed to be included in your code, you have a choice: Make your own build system, or use one of the provided ones, and that will almost always include CMake.Īnd that will quickly be the common denominator if you include multiple projects.Īnd, if you need a library that's preinstalled, the chances of it having a find CMake script or config CMake script are excellent. More packages use CMake than any other system. But even a really good one, or one that re-uses a familiar syntax, can't come close to CMake.Įvery IDE supports CMake (or CMake supports that IDE). Why must the answer be CMake?īuild systems are a hot topic. If so, you'll benefit from a CMake-like build system.
Cmake include all but code#

Be sure to check the HSF CMake Training, as well! You can raise an issue or put in a merge request on GitLab. This book is meant to be a living document.
