GNU/Linux >> Belajar Linux >  >> Linux

cara yang benar untuk menyandikan/menyematkan nomor versi dalam kode program

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.


Linux
  1. Cara Menyematkan Biner yang Dapat Dieksekusi Dalam Skrip Shell Tanpa Alat Ekstra?

  2. Cara yang Benar Untuk Mengakses File Bantuan Tertentu Di Vim?

  3. Bagaimana Tidak Melakukan Apa-apa Selamanya Dengan Cara yang Elegan?

  1. Apa cara yang benar untuk menginstal jdk di linux

  2. Adakah cara untuk menyelesaikan versi `GLIBC_2.17 'tidak ditemukan?

  3. Apakah ada cara untuk mendapatkan CLOCK_TAI yang benar di Linux?

  1. Sembunyikan argumen untuk memprogram tanpa kode sumber

  2. Cara cepat menghitung file secara rekursif di linux

  3. Cegah SSH mengiklankan nomor versinya