CMake
This tutorial link shows how to autogenerate header files that contain variables whose values get populated by CMake. These autogenerated header files go into the source folder.
Basic CMakeLists.txt
Here is the most basic CMakeLists.txt
file which contains the minimum needed for
successful compilation.
cmake_minimum_required (VERSION 2.6) project (Tutorial) add_executable(Tutorial tutorial.cxx)
Adding Version Number and Configured Header File
We make use of the configure_file
CMake function which takes in an input file and
generates an output file whereever we want. You write the input file with variables
that you want to get fleshed out by CMake. The variable syntax is @VAR@
or ${VAR}
.
Adding a Library
Add a libary by adding code in its own directory. I then added a CMakeLists.txt file in that directory which has one line that says
add_library(MathFunctions mysqrt.cxx)
Making Libraries Optional
By making use of a cool CMake feature we can set libraries to be optional, and create c++ code that selectively compiles with blocks of code by us simply flipping switches in the CMake configurations. We do this by my making use of CMake's ability to generate header files. We then use conditionals in our blocks of code that rely on whether or not something has been defined.
We also use #cmakedefine
to conditionally define stuff in our header depending on an
option was set in CMake configuration. Really cool shit.
Installing and Testing
We will make install rules by setting up the library and header files to be installed
by adding the install rules in the CMakeLists.txt
file.
To make a CMake debugabe target put this in the CMake lists file:
set(CMAKE_BUILD_TYPE Debug)