Attualmente per creare versioni per il nostro progetto, stiamo usando
Travis CI per caricare i binari ogni volta che un tag è
creato .
Utilizziamo versioning semantico , quindi i nostri tag hanno la forma v<Major>.<Minor>.<Patch>
. Il nostro numero di versione è impostato da CMake e a
evitare problemi con la sincronizzazione con il numero di versione del tag, lo siamo
utilizzando un semplice script per estrarre il numero di versione dalla variabile di ambiente TRAVIS_TAG
.
La nostra CMakeLists.txt
ha un aspetto simile al seguente:
execute_process(COMMAND .travis/get_version_from_tag.sh major OUTPUT_VARIABLE MAJOR)
execute_process(COMMAND .travis/get_version_from_tag.sh minor OUTPUT_VARIABLE MINOR)
execute_process(COMMAND .travis/get_version_from_tag.sh patch OUTPUT_VARIABLE PATCH)
set(VERSION ${MAJOR}.${MINOR}.${PATCH})
# Using the version number later for packaging, etc...
set(CPACK_PACKAGE_MAJOR ${MAJOR})
set(CPACK_PACKAGE_MINOR ${MINOR})
set(CPACK_PACKAGE_PATCH ${PATCH})
INCLUDE(CPack)
Mi piace questo approccio perché rende molto facile pubblicare le versioni e non c'è alcun rischio di dimenticare di aggiornare il numero di versione codificato in un file da qualche parte. D'altra parte, sono preoccupato che potrebbe essere un po 'confuso poiché da una copia del codice sorgente da solo, è impossibile conoscere il numero di versione.
Questa è una configurazione eccessivamente complicata e confusa?