+1 untuk, "Banyak, dan mereka mengerikan."
Tapi, yang "terkaya" dan "paling skalabel" mungkin adalah CMake , yang merupakan generator Makefile (juga menghasilkan MSVC ++ *.proj/ *.sln) asli. Sintaks yang aneh, tetapi setelah Anda mempelajarinya, Anda dapat membuat build dengan baik untuk platform yang berbeda. Jika saya "mulai-segar", saya mungkin akan menggunakan CMake. Ini harus menangani daftar Anda, meskipun "pembuatan kode" Anda dapat mengambil "kehidupan-nya-nya sendiri" di luar sistem build tergantung pada apa yang ingin Anda lakukan. (Lihat di bawah.)
Untuk proyek sederhana, generator QMake baik-baik saja (Anda tidak perlu menggunakan pustaka Qt untuk menggunakan QMake). Namun, Anda tidak mendeskripsikan "sederhana" - pembuatan kode dan "fase ekstra" berarti Anda mungkin menginginkan CMakeatau sesuatu dengan API yang kaya untuk ekstensi Anda sendiri, seperti Scons(atau Waf).
Kami menggunakan Scons di tempat kerja. Ini menghasilkan "bullet-proof-builds", tetapi sangat lambat. Tidak ada sistem lain yang anti peluru seperti Scons. Tapi, ini lambat. Itu ditulis dengan Python dan kami telah memperluas antarmuka untuk "organisasi-ruang kerja" kami (di mana kami hanya menentukan dependensi modul), dan itu adalah bagian dari Sconsmaksud desain (jenis ekstensi ini melalui Python). Nyaman, tetapi pembuatannya lambat. Anda mendapatkan build anti peluru (kotak developer mana pun dapat membuat rilis final), tetapi lambat. Dan, itu lambat. Jangan lupa bahwa jika Anda menggunakannya Scons, lambat. Dan, itu lambat.
Membuat saya sakit ketika berpikir bahwa satu dekade setelah Tahun 2000, kita masih belum memiliki mobil terbang. Kami mungkin harus menunggu seratus tahun lagi atau sesuatu untuk mendapatkannya. Dan, kita semua mungkin akan terbang dengan mobil terbang kita yang masih dibuat dengan sistem build yang jelek.
Ya, semuanya mengerikan.
[TENTANG PEMBUATAN KODE]
Sconsbekerja pada "fase", dan mereka "agak statis". Ia dapat membangun kode yang dihasilkan sebagai bagian dari pembangunan (orang-orang melakukan ini dengan beberapa cara berbeda), tetapi ini telah dijelaskan sebagai, "sesuatu yang sangat tidak mirip Scons".
Jika itu sederhana "praproses beberapa file dan buat file sumber", maka tidak ada masalah besar (Anda memiliki banyak opsi, dan inilah mengapa qmakeditulis - untuk mocpraproses *.hpp/*.cppfile).
Namun, jika Anda melakukan ini dengan "cara yang berat", Anda perlu membuat skrip sendiri. Sebagai contoh, kami memiliki skrip as-a-part-of-the-build yang menanyakan database dan menghasilkan kelas C ++ untuk antarmuka antara "lapisan" (dalam pengembangan aplikasi 3-tingkat tradisional). Demikian pula, kami membuat kode sumber server / klien melalui IDL, dan informasi versi tertanam untuk mengizinkan beberapa klien / server berjalan secara bersamaan dengan versi yang berbeda (untuk "klien" atau "server" yang sama). Banyak kode sumber yang dihasilkan. Kita bisa "berpura-pura" bahwa itu adalah "sistem-build", tetapi sebenarnya, ini adalah infrastruktur non-sepele untuk "manajemen konfigurasi", yang bagiannya adalah "sistem-build". Misalnya, sistem ini harus, "menghapus" dan "