You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Discover a better approach to building, testing, and packaging your software
What is this book about?
Creating top-notch software is an extremely difficult undertaking. Developers researching the subject have difficulty determining which advice is up-to-date and which approaches have already been replaced by easier, better practices. At the same time, most online resources offer limited explanation, while also lacking the proper context and structure.
This book covers the following exciting features:
Understand best practices for building C++ code
Gain practical knowledge of the CMake language by focusing on the most useful aspects
Use cutting-edge tooling to guarantee code quality with the help of tests and static and dynamic analysis
Discover how to manage, discover, download, and link dependencies with CMake
Build solutions that can be reused and maintained in the long term
Understand how to optimize build artifacts and the build process itself
If you feel this book is for you, get your copy today!
Instructions and Navigations
All of the code is organized into folders. For example, Chapter02.
Following is what you need for this book:
The book is for build engineers and software developers with knowledge of C/C++ programming who are looking to learn CMake to automate the process of building small and large software solutions. If you are someone who's just getting started with CMake, a long-time GNU Make user, or simply looking to brush up on the latest best practices, this book is for you.
With the following software and hardware list you can run all code files present in the book (Chapter 1-13).
Software and Hardware List
Chapter
Software/Hardware required
OS required
1-13
Cmake 3.20
Windows, Mac OS X, and Linux
We also provide a PDF file that has color images of the screenshots/diagrams used in this book. Click here to download it.
Errata
Page 46 (Paragraph 1, line 1): Multiline comments get their name from their symbol – they start with an opening square bracket ([) ...should beMultiline comments get their name from their symbol – they start with an # and an opening square bracket (#[) ...
Page 75 (line 10): main()should beendmacro()
Page 107 (Paragraph 2, line 14 and 15): Calling test_run() isn't very complicated at all. We start by setting the required standard, after which we call test_run() and print the collected information to the user:should beCalling try_run() isn't very complicated at all. We start by setting the required
standard, after which we call try_run() and print the collected information to the
user:
Page 137 (Paragraph 1, line 1): generation expressionshould begenerator expression
Page 168 (Paragraph 5, line 19): • -finline-functions-called-once: GCC only
• -finline-functions: Clang and GCC
• -finline-hint-functions: Clang only
• -finline-functions-called-once: GCC onlyshould be• -finline-functions-called-once: GCC only
• -finline-functions: Clang and GCC
• -finline-hint-functions: Clang only
Page 208 (line 13): • Discovering legacy packages with FindPkgConfig0should be• Discovering legacy packages with FindPkgConfig
Page 213 (line 11): <PKG_NAME>_LIBRARIES or <PKG_NAME>_LIBRARIES or <PKG_NAME>_LIBSshould be<PKG_NAME>_LIBRARIES or <PKG_NAME>_LIBS
Page 222 (line 9): # deliberately used in mind-module against the documentationshould be# deliberately used in find-module against the documentation
Page 222 (Paragraph 2,line 16): If a matching file is found, its path will be stored in the PQXX_LIBRARY_PATH variable. Otherwise, the variable will be set to -NOTFOUND, or PQXX_HEADER_PATH-NOTFOUND in this case.should beIf a matching file is found, its path will be stored in the PQXX_LIBRARY_PATH variable. Otherwise, the variable will be set to -NOTFOUND, or PQXX_LIBRARY_PATH-NOTFOUND in this case.
Rafał Świdziński
works as a staff engineer at Google. With over 10 years of professional experience as a full stack developer, he has been able to experiment with a vast multitude of programming languages and technologies. During this time, he has been building software under his own company and for corporations including Cisco Meraki, Amazon, and Ericsson.
Originally from Łódź, Poland, he now lives in London, UK, from where he runs a YouTube channel, “Smok,” discussing topics of software development. He tackles technical problems, including real-life and work-related challenges encountered by many people in the field. Throughout his work, he explains the technical concepts in detail and demystifies the art of being a software engineer. His primary focus is on high-quality code and the craftsmanship of programming.
Download a free PDF
If you have already purchased a print or Kindle version of this book, you can get a DRM-free PDF version at no cost. Simply click on the link to claim your free PDF.