GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Korrekte Methode zum Codieren/Einbetten der Versionsnummer in den Programmcode

Normalerweise werden Haupt- und Nebenversionsnummern (wie in 1.2, 1 ist Haupt- und 2 ist Nebenversion) meistens direkt in den Code geschrieben, normalerweise als #define (weil Sie sie möglicherweise für bedingte Kompilierungen benötigen, z. B. #if Blöcke).

Normalerweise haben Sie einen separaten Header, der nur diese Definitionen enthält und nichts anderes (außer dem Header-Guard), um Abhängigkeiten zu minimieren.

Einige Leute verwenden das Build-System (wie cmake), um eine Versionsnummer aus der Versionskontrolle (git, svn, cvs usw.) zu ziehen und diese Versionsnummer dann in ihren "version"-Header einzufügen. Oder sie fügen die Versionsnummer in die Konfigurationsdateien des Build-Systems ein und setzen diese dann in den Header, wie im cmake-Tutorial gezeigt. Persönlich mag ich diesen Ansatz nicht, da er dazu neigt, Ihre Header-Dateien zu oft zu ändern und häufige und sinnlose Neukompilierungen zu verursachen.

Ich ziehe es vor, die Versionsnummer in die Header-Datei zu schreiben und dann diese Versionsnummern (Haupt-, Neben-, ...) aus dem Header auf das Build-System zu ziehen. Dies ist eine weitere Sache, die cmake sehr einfach erledigen kann.

Wenn Sie eine sehr taggenaue Versionsnummer in Ihre Software einbetten möchten, z. B. eine Build-Nummer oder Revisionsnummer, sollten Sie diese nicht als #define eingeben in einer Header-Datei, sondern als extern const Variable, die Sie in einer cpp-Datei definieren. Beispielsweise können Sie cmake verwenden, um eine Revisionsnummer aus Ihrem Versionskontrollsystem abzurufen, und diese an die cpp-Datei anheften, die diesen extern const int revision; definiert Variable (durch configure_file von cmake Funktion) und verknüpfen Sie Ihre Programme mit dieser cpp / object-Datei. Auf diese Weise wird die Revisionsnummer bei jedem Rebuild automatisch in Ihre Programme eingebaut und löst nicht jedes Mal, wenn sie aktualisiert wird (was bei jedem Commit der Fall ist), eine vollständige Neukompilierung aus.

Der Punkt ist, dass Haupt- und Nebenversionsnummern nicht häufig genug geändert werden, um irgendeine Art von automatischer Wartung zu erfordern, aber Sie müssen sie manuell nur an einer Stelle schreiben und sie automatisch überall dort verbreiten, wo sie relevant sein könnten (ich würde das empfehlen dieser Ort ist die Header-Datei selbst). Es sind nur die Revisions- oder Build-Nummern, die vollständig automatisiert werden müssen (von der Versionskontrolle generiert und überall sonst automatisch weitergegeben).


Ich glaube, es ist üblich, die Versionsnummer in einer dedizierten Header-Datei aufzubewahren. Einige Tools können dies automatisch für Sie generieren.

Siehe beispielsweise den Abschnitt „Hinzufügen einer Versionsnummer und einer konfigurierten Header-Datei“ im CMake-Tutorial.


Linux
  1. Was ist der beste Weg, um die Anzahl der Dateien in einem Verzeichnis zu zählen?

  2. Wie kann man auf elegante Weise für immer nichts tun?

  3. So installieren Sie den Nano-Editor aus dem Quellcode

  4. Schnellere Möglichkeit, eine große Anzahl von Dateien zu löschen

  5. Verhindern Sie, dass SSH seine Versionsnummer ankündigt

Einführung in das Versionskontrollsystem

So überprüfen Sie die Versionsnummer und den Codenamen von Linux Mint

Eine einfache Möglichkeit, die NVIDIA-Treiberversion unter Linux zu überprüfen

Korrekte Verwendung von Ubuntu systemctl zur Steuerung von Systemd

Verstecken Sie Argumente, um ohne Quellcode zu programmieren

Schnelle Möglichkeit, Dateien unter Linux rekursiv zu zählen