Szukaj…


Wprowadzenie

Zastosowanie CMake w projekcie C ++, jeśli jest używane poprawnie, może pozwolić programiście mniej skupić się na platformie, numerze wersji programu, a więcej na samym programie. Za pomocą CMake możesz zdefiniować tagi preprocesora, które pozwalają na łatwe sprawdzenie, która platforma lub inne tagi preprocesora mogą być potrzebne w rzeczywistym programie. Takich jak numer wersji, który można wykorzystać w systemie dziennika.

Składnia

  • # zdefiniować nazwę_procesora „@ cmake_value @”

Uwagi

Ważne jest, aby zrozumieć, że nie każdy preprocesor powinien być zdefiniowany w config.h.in . Tagi preprocesora są zwykle używane tylko w celu ułatwienia życia programistom i powinny być używane z dyskrecją. Powinieneś sprawdzić, czy tag preprocesora już istnieje, zanim go zdefiniujesz, ponieważ możesz napotkać niezdefiniowane zachowanie w innym systemie.

Użycie CMake do zdefiniowania numeru wersji do użycia w C ++

Możliwości są nieskończone. ponieważ można użyć tej koncepcji do pobrania numeru wersji z systemu kompilacji; takich jak git i użyj tego numeru wersji w swoim projekcie.

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

wynik

project name: project_name version: 0.0.0


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow