GNU/Linux >> Linux Esercitazione >  >> Linux

modo corretto per codificare/incorporare il numero di versione nel codice del programma

Normalmente, per i numeri di versione maggiore e minore (come in 1.2, 1 è maggiore e 2 è minore), sono più spesso scritti direttamente nel codice, di solito come #define (poiché potresti averne bisogno per le compilazioni condizionali, ad esempio #if blocchi).

In genere avresti un'intestazione separata che contiene solo quelle definizioni e nient'altro (tranne la protezione dell'intestazione), per ridurre al minimo le dipendenze.

Alcune persone usano il sistema di compilazione (come cmake) per estrarre un numero di versione dal controllo della versione (git, svn, cvs, ecc.) e poi inseriscono quel numero di versione nella loro intestazione "versione". Oppure, inseriscono il numero di versione nei file di configurazione del sistema di compilazione e poi lo inseriscono nell'intestazione, come mostrato nel tutorial di cmake. Personalmente, non mi piace questo approccio perché tende a modificare troppo spesso i tuoi file di intestazione e causa ricompilazioni frequenti e inutili.

Preferisco scrivere il numero di versione nel file di intestazione e quindi estrarre quei numeri di versione (maggiore, minore, ..) dall'intestazione nel sistema di compilazione. Questa è un'altra cosa che cmake può fare molto facilmente.

Se desideri incorporare un numero di versione giornaliero nel tuo software, ad esempio un numero di build o un numero di revisione, non dovresti inserirlo come #define in un file di intestazione, ma piuttosto come extern const variabile che definisci in un file cpp. Ad esempio, puoi usare cmake per estrarre un numero di revisione dal tuo sistema di controllo della versione, attaccarlo al file cpp che definisce questo extern const int revision; variabile (tramite configure_file di cmake function) e collega i tuoi programmi con quel file cpp / object. In questo modo, il numero di revisione viene incorporato automaticamente nei tuoi programmi ad ogni ricostruzione e non attiverà ricompilazioni complete ogni volta che viene aggiornato (ovvero ad ogni commit).

Il punto è che i numeri di versione principali e secondari non vengono modificati abbastanza frequentemente da richiedere alcun tipo di manutenzione automatica, ma è necessario scriverli manualmente in un solo posto e propagarli automaticamente ovunque dove potrebbe essere rilevante (lo consiglierei questo posto è il file di intestazione stesso). Sono solo i numeri di revisione o build che devono essere completamente automatizzati (generati dal controllo della versione e propagati ovunque automaticamente).


Credo sia consuetudine mantenere il numero di versione in un file di intestazione dedicato. Alcuni strumenti possono generarlo automaticamente per te.

Ad esempio, consulta la sezione "Aggiunta di un numero di versione e di un file di intestazione configurato" nel tutorial di CMake.


Linux
  1. Trova il numero di righe di codice dal repository GitHub

  2. Modo per incorporare un binario eseguibile in uno script di shell senza strumenti aggiuntivi?

  3. Il modo corretto per accedere a un file di aiuto specifico in Vim?

  4. Linux:dove scaricare il codice sorgente del kernel Linux di una versione specifica?

  5. Come non fare nulla per sempre in modo elegante?

Introduzione al sistema di controllo della versione

Come controllare il numero di versione e il nome in codice di Linux Mint

Un modo semplice per controllare la versione dei driver NVIDIA su Linux

Modo corretto di usare Ubuntu systemctl per controllare Systemd

Modo più veloce per eliminare un gran numero di file

Impedisci a SSH di pubblicizzare il proprio numero di versione