Sök…


Introduktion

Användning av CMake i ett C ++ -projekt om det används korrekt kan göra det möjligt för programmeraren att fokusera mindre på plattformen, programversionsnummer och mer på själva programmet. Med CMake kan du definiera förbehandlartaggar som gör det enkelt att kontrollera vilken plattform eller andra förbehandlingstaggar du kan behöva i själva programmet. Såsom det versionnummer som skulle kunna utnyttjas i ett loggsystem.

Syntax

  • #definiera förbehandlarnamn "@ cmake_value @"

Anmärkningar

Det är viktigt att förstå att inte alla förbehandlare bör definieras i config.h.in . Preprocessor-taggar används vanligtvis bara för att underlätta programmerarnas liv och bör användas med diskretion. Du bör undersöka om en preprocessor-tagg redan finns innan du definierar den, eftersom du kan stöta på odefinierat beteende på olika system.

Använd CMake för att definiera versionnumret för C ++ -användning

Möjligheterna är oändliga. eftersom du kan använda det här konceptet för att dra versionnumret från ditt build-system; till exempel git och använd det versionnumret i ditt projekt.

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;
}

produktion

project name: project_name version: 0.0.0


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow