Biasanya, untuk nomor versi mayor dan minor (seperti pada, 1.2, 1 mayor dan 2 minor), keduanya paling sering ditulis dalam kode secara langsung, biasanya sebagai #define
(karena Anda mungkin memerlukannya untuk kompilasi bersyarat, misalnya, #if
blok).
Anda biasanya akan memiliki header terpisah yang hanya berisi definisi tersebut dan tidak ada yang lain (kecuali header-guard), untuk meminimalkan ketergantungan.
Beberapa orang menggunakan sistem build (seperti cmake) untuk menarik nomor versi dari kontrol versi (git, svn, cvs, dll..) dan kemudian memasukkan nomor versi tersebut ke dalam header "versi" mereka. Atau, mereka memasukkan nomor versi ke file konfigurasi sistem build dan kemudian memasukkannya ke header, seperti yang ditunjukkan pada tutorial cmake. Secara pribadi, saya tidak suka pendekatan ini karena cenderung memodifikasi file header Anda terlalu sering dan menyebabkan kompilasi ulang yang sering dan sia-sia.
Saya lebih suka menulis nomor versi di file header, dan kemudian mengeluarkan nomor versi tersebut (mayor, minor, ..) dari header ke sistem build. Ini adalah hal lain yang dapat dilakukan cmake dengan sangat mudah.
Jika Anda ingin menyematkan nomor versi harian ke dalam perangkat lunak Anda, seperti nomor build atau nomor revisi, maka Anda tidak boleh memasukkannya sebagai #define
dalam file header, melainkan sebagai extern const
variabel yang Anda tentukan dalam satu file cpp. Misalnya, Anda dapat menggunakan cmake untuk menarik nomor revisi dari sistem kontrol versi Anda, tempelkan itu ke file cpp yang mendefinisikan extern const int revision;
ini variabel (melalui configure_file
cmake fungsi), dan tautkan program Anda dengan file cpp / objek itu. Dengan cara ini, nomor revisi dibuat ke dalam program Anda secara otomatis pada setiap pembuatan ulang, dan tidak akan memicu kompilasi ulang penuh setiap kali diperbarui (yang ada di setiap komit).
Intinya adalah bahwa nomor versi mayor dan minor tidak cukup sering diubah untuk memerlukan pemeliharaan otomatis apa pun, tetapi Anda perlu menulisnya secara manual di satu tempat saja, dan secara otomatis menyebarkannya ke tempat lain yang mungkin relevan (saya akan merekomendasikan itu tempat ini menjadi file header itu sendiri). Hanya nomor revisi atau build yang perlu diotomatisasi sepenuhnya (dihasilkan oleh kontrol versi, dan disebarkan ke tempat lain secara otomatis).
Saya yakin sudah biasa menyimpan nomor versi dalam file header khusus. Beberapa alat dapat membuat ini secara otomatis untuk Anda.
Misalnya, lihat bagian "Menambahkan Nomor Versi dan File Header yang Dikonfigurasi" di Tutorial CMake.