Normálně jsou čísla hlavních a vedlejších verzí (jako v případě 1.2, 1 hlavní a 2 vedlejší) nejčastěji zapsána přímo v kódu, obvykle jako #define
(protože je možná budete potřebovat pro podmíněné kompilace, např. #if
bloky).
Obvykle byste měli samostatnou hlavičku, která obsahuje pouze ty definice a nic jiného (kromě hlavičky), abyste minimalizovali závislosti.
Někteří lidé používají systém sestavení (jako cmake) k vytažení čísla verze z řízení verzí (git, svn, cvs atd..) a pak toto číslo verze vloží do záhlaví „verze“. Nebo vloží číslo verze do konfiguračních souborů systému sestavení a pak to vloží do záhlaví, jak je znázorněno v tutoriálu cmake. Osobně se mi tento přístup nelíbí, protože má tendenci příliš často upravovat vaše hlavičkové soubory a způsobit časté a zbytečné rekompilace.
Preferuji zapsání čísla verze do hlavičkového souboru a následné vytažení těchto čísel verzí (hlavní, vedlejší, ..) z hlavičky do systému sestavení. To je další věc, kterou cmake dokáže velmi snadno.
Pokud chcete do svého softwaru vložit velmi denní číslo verze, jako je číslo sestavení nebo číslo revize, neměli byste je vkládat jako #define
v záhlaví souboru, ale spíše jako extern const
proměnnou, kterou definujete v jednom souboru cpp. Například můžete použít cmake k získání čísla revize z vašeho systému správy verzí, připevnit ho do souboru cpp, který definuje toto extern const int revision;
proměnná (prostřednictvím configure_file
cmake funkce) a propojte své programy s tímto souborem cpp / objekt. Tímto způsobem je číslo revize zabudováno do vašich programů automaticky při každém novém sestavení a nespustí úplné rekompilace při každé aktualizaci (což je při každém potvrzení).
Jde o to, že čísla hlavních a vedlejších verzí se nemění tak často, aby vyžadovaly jakoukoli automatickou údržbu, ale musíte je ručně zapsat pouze na jedno místo a automaticky je šířit všude jinde, kde by to mohlo být relevantní (doporučoval bych, aby tímto místem je samotný soubor záhlaví). Pouze čísla revizí nebo sestavení musí být plně automatizována (generována správou verzí a automaticky šířena všude jinde).
Věřím, že je obvyklé uchovávat číslo verze ve vyhrazeném souboru záhlaví. Některé nástroje to za vás mohou vygenerovat automaticky.
Podívejte se například na sekci "Přidání čísla verze a konfiguračního souboru záhlaví" v CMake Tutorial.