cmake
CMake gebruiken om preprocessor-tags te configureren
Zoeken…
Invoering
Het gebruik van CMake in een C ++ project kan, indien correct gebruikt, de programmeur in staat stellen zich minder te concentreren op het platform, het programmaversienummer en meer op het eigenlijke programma zelf. Met CMake kunt u preprocessor-tags definiëren waarmee u gemakkelijk kunt controleren welk platform of andere preprocessor-tags u mogelijk in het eigenlijke programma nodig hebt. Zoals het versienummer dat in een logsysteem kan worden gebruikt.
Syntaxis
- #define preprocessornaam "@ cmake_value @"
Opmerkingen
Het is belangrijk om te weten dat niet elke preprocessor moet worden gedefinieerd in de config.h.in
. Preprocessor-tags worden over het algemeen alleen gebruikt om het leven van de programmeurs gemakkelijker te maken en moeten met discretie worden gebruikt. U moet onderzoeken of er al een preprocessor-tag bestaat voordat u deze definieert, omdat u dan mogelijk ongedefinieerd gedrag op een ander systeem tegenkomt.
CMake gebruiken om het versienummer voor C ++ -gebruik te definiëren
De mogelijkheden zijn eindeloos. omdat u dit concept kunt gebruiken om het versienummer uit uw buildsysteem te halen; zoals git en gebruik dat versienummer in je project.
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;
}
uitgang
project name: project_name version: 0.0.0