# CMake-Cookbook
**Repository Path**: huan121/CMake-Cookbook
## Basic Information
- **Project Name**: CMake-Cookbook
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-09-27
- **Last Updated**: 2024-09-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CMake Cookbook
This is the code repository for [CMake Cookbook](https://www.packtpub.com/application-development/cmake-cookbook?utm_source=github&utm_medium=repository&utm_campaign=9781788470711 ), published by Packt.
**Building, testing, and packaging modular software with modern CMake**
## What is this book about?
CMake is cross-platform, open-source software for managing the build process in a portable fashion. This book features a collection of recipes and building blocks with tips and techniques for working with CMake, CTest, CPack, and CDash.
This book covers the following exciting features:
* Configure, build, test, and install code projects using CMake
* Detect operating systems, processors, libraries, files, and programs for conditional compilation
* Increase the portability of your code
* Refactor a large codebase into modules with the help of CMake
* Build multi-language projects
* Know where and how to tweak CMake configuration files written by somebody else
* Package projects for distribution
* Port projects to CMake
If you feel this book is for you, get your [copy](https://www.amazon.com/dp/1788470710) today!
## Instructions and Navigations
All of the code is organized into folders. For example, Chapter02.
The code will look like the following:
```
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(recipe-01 LANGUAGES CXX)
add_executable(hello-world hello-world.cpp)
```
**Following is what you need for this book:**
If you are a software developer keen to manage build systems using CMake or would like to understand and modify CMake code written by others, this book is for you. A basic knowledge of C++, C, or Fortran is required to understand the topics covered in this book.
With the following software and hardware list you can run all code files present in the book (Chapter 1-15).
### Software and Hardware List
| Chapter | Software required | OS required |
| -------- | ------------------------------------ | ----------------------------------- |
| 1-15 | CMake >= 3.5 g++ supporting C++11 gcc supporting C99 gfortran Windows: msys2 installer or Visual Studio | Windows, Mac OS X, and Linux (Any) |
| 2 | Eigen 3.3.4 | Windows, Mac OS X, and Linux (Any) |
| 3 | Python interpreter Python development libraries: BLAS LAPACK MPI library Eigen 3.3.4 Boost 1.59 ZeroMQ | Windows, Mac OS X, and Linux (Any) |
| 4 | Boost 1.54 Catch2 Google Test | Windows, Mac OS X, and Linux (Any) |
| 5 | Python interpreter Python development libraries BLAS LAPACK | Windows, Mac OS X, and Linux (Any) |
| 6 | Python interpreter git | Windows, Mac OS X, and Linux (Any) |
| 8 | Boost 1.54 FFTW3 Eigen 3.3.4 | Windows, Mac OS X, and Linux (Any) |
| 9 | LAPACK | Windows, Mac OS X, and Linux (Any) |
| 11 | CFFI Anaconda pybind11 | Windows, Mac OS X, and Linux (Any) |
| 12 | Doxygen Sphinx Breathe | Windows, Mac OS X, and Linux (Any) |
| 13 | MXE Visual Studio | Windows, Mac OS X, and Linux (Any) |
| 14 | CDash | Windows, Mac OS X, and Linux (Any) |
We also provide a PDF file that has color images of the screenshots/diagrams used in this book. [Click here to download it](https://www.packtpub.com/sites/default/files/downloads/CMakeCookbook_ColorImages.pdf).
## Get to Know the Author
**Radovan Bast** works at the High Performance Computing Group at UiT - The Arctic University of Norway in Tromsø and leads the CodeRefinery project. He has a PhD in theoretical chemistry and contributes to a number of quantum chemistry programs as a code developer. He enjoys learning new programming languages and techniques, and teaching programming to students and researchers. He got in touch with CMake in 2008 and has ported a number of research codes and migrated a number of communities to CMake since then.
**Roberto Di Remigio** is a postdoctoral fellow in theoretical chemistry at UiT - The Arctic University of Norway in Tromsø, Norway and Virginia Tech, USA. He is currently working on stochastic methods and solvation models. He is a developer of the PCMSolver library and the Psi4 open source quantum chemistry program. He contributes or has contributed to the development of popular quantum chemistry codes and libraries: DIRAC, MRCPP, DALTON, LSDALTON, XCFun, and ReSpect. He usually programs in C++ and Fortran.
### Suggestions and Feedback
[Click here](https://docs.google.com/forms/d/e/1FAIpQLSdy7dATC6QmEL81FIUuymZ0Wy9vH1jHkvpY57OiMeKGqib_Ow/viewform) if you have any feedback or suggestions.
### 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.