cmakeUsing CMake to configure preproccessor tags


The use of CMake in a C++ project if used correctly can allow the programmer to focus less on the platform, program version number and more on the actual program itself. With CMake you can define preprocessor tags that allow for easy checking of which platform or any other preprocessor tags you might need in the actual program. Such as the version number which could be leveraged in a log system.



It is important to understand not every preprocessor should be defined in the Preprocessor tags are generally used only to make the programmers life easier and should be used with discretion. You should research if a preprocessor tag already exists before defining it as you may run into undefined behavior on different system.

Using CMake to define the version number for C++ usage

The possibilities are endless. as you can use this concept to pull the version number from your build system; such as git and use that version number in your project.


cmake_minimum_required(VERSION 3.8)
project(project_name VERSION "0.0.0")

configure_file(${path to configure file ''}
include_directories(${PROJECT_BINARY_BIN}) // this allows the 'config.h' file to be used throughout the program



#define PROJECT_NAME "@[email protected]"
#define PROJECT_VER  "@[email protected]"
#define PROJECT_VER_MAJOR "@[email protected]"
#define PROJECT_VER_MINOR "@[email protected]"
#define PTOJECT_VER_PATCH "@[email protected]"



#include <iostream>
#include "config.h"
int main()
    std::cout << "project name: " << PROJECT_NAME << " version: " << PROJECT_VER << std::endl;
    return 0;


project name: project_name version: 0.0.0