Professional CMake:

A Practical Guide

Learn to use CMake effectively with practical advice from a CMake co-maintainer. You can also have the author work directly with your team!

Professional CMake: A Practical Guide 1st Edition

This is part of the change history for the book Professional CMake: A Practical Guide. The book was initially released with a X.Y.Z versioning scheme, but this was found to be incompatible with some book-tracking systems. All 1.0.z releases are considered to be “1st Edition” and do not have any ISBN.


12th August 2018

This release contains fixes for a number of trivial typos, grammar and formatting improvements. Two diagrams were also corrected as mentioned below.

Apple chapter:

  • The macOS framework directory structure example diagrams incorrectly showed the Resources, Headers and PrivateHeaders subdirectories parented under Versions instead of Versions/A. The text correctly described the locations of these subdirectories, but the diagrams have been updated in this release to reflect their correct locations (two diagrams, both in section 22.3).


29th July 2018

This release contains a small number of minor typo/readability changes and corrects an erroneous statement about policy and function interaction.

Using Subdirectories chapter:

  • Fix typo in example output: /somewhere/.../foo –> /somewhere/.../subdir

Functions And Macros chapter:

  • Fix incorrect statement that functions introduce a new policy scope.

Policies chapter:

  • Add a paragraph to clarify and advise how to control policy settings for functions.
  • Remove stray CMAKE_POLICY_WARNING_CMP<NNNN> text introduced during indexing.

Libraries chapter:

  • Minor grammatical fix in Recommended Practices section.


15th July 2018

This release contains a small number of minor changes only.

Build Type chapter:

  • Fix typo: MinRizeRel –> MinSizeRel

Language Requirements chapter:

  • Minor readability improvement of Recommended Practices section.
  • Mention that language requirements are preserved when targets are exported and installed.


10th July 2018

First public release.