cmake
Utilisation de CMake pour configurer les tags préprocesseurs
Recherche…
Introduction
L'utilisation de CMake dans un projet C ++ s'il est utilisé correctement peut permettre au programmeur de se concentrer moins sur la plate-forme, le numéro de version du programme et plus encore sur le programme lui-même. Avec CMake, vous pouvez définir des balises de préprocesseur qui permettent de vérifier facilement la plate-forme ou les autres balises de préprocesseur dont vous avez besoin dans le programme. Tels que le numéro de version qui pourrait être utilisé dans un système de journalisation.
Syntaxe
- #define nom_processeur "@ cmake_value @"
Remarques
Il est important de comprendre que tous les préprocesseurs ne doivent pas être définis dans le config.h.in
. Les balises de préprocesseur sont généralement utilisées uniquement pour faciliter la vie des programmeurs et doivent être utilisées avec discrétion. Vous devez rechercher si une balise de préprocesseur existe déjà avant de la définir car vous risquez de rencontrer un comportement indéfini sur un système différent.
Utiliser CMake pour définir le numéro de version pour une utilisation C ++
Les possibilités sont infinies. comme vous pouvez utiliser ce concept pour extraire le numéro de version de votre système de génération; comme git et utilisez ce numéro de version dans votre projet.
CMakeLists.txt
cmake_minimum_required(VERSION 3.8)
project(project_name VERSION "0.0.0")
configure_file(${path to configure file 'config.h.in'}
include_directories(${PROJECT_BINARY_BIN}) // this allows the 'config.h' file to be used throughout the program
...
config.h.in
#ifndef INCLUDE_GUARD
#define INCLUDE_GUARD
#define PROJECT_NAME "@PROJECT_NAME@"
#define PROJECT_VER "@PROJECT_VERSION@"
#define PROJECT_VER_MAJOR "@PROJECT_VERSION_MAJOR@"
#define PROJECT_VER_MINOR "@PROJECT_VERSION_MINOR@"
#define PTOJECT_VER_PATCH "@PROJECT_VERSION_PATCH@"
#endif // INCLUDE_GUARD
main.cpp
#include <iostream>
#include "config.h"
int main()
{
std::cout << "project name: " << PROJECT_NAME << " version: " << PROJECT_VER << std::endl;
return 0;
}
sortie
project name: project_name version: 0.0.0