Saya menggunakan CMake untuk menghasilkan proyek IDE / makefile, tetapi saya masih perlu memanggil "skrip" khusus untuk memanipulasi file yang saya kompilasi atau bahkan menghasilkan kode.
Dalam proyek-proyek sebelumnya saya telah menggunakan Python dan itu OK, tapi sekarang saya mengalami masalah serius mengelola banyak dependensi dalam dua proyek yang sangat besar yang saya kerjakan jadi saya ingin meminimalkan ketergantungan di mana-mana.
Seseorang menyarankan saya untuk menggunakan C ++ untuk menulis skrip build saya alih-alih menambahkan ketergantungan bahasa hanya untuk itu. Proyek-proyek themeelves sudah menggunakan C ++ sehingga ada beberapa keuntungan yang bisa saya lihat:
- untuk membangun keseluruhan proyek, hanya sebuah kompiler C ++ dan CMake yang diperlukan, tidak ada yang lain (semua dependensi lainnya adalah C atau C ++);
- Keamanan tipe C ++ (saat menggunakan C ++ modern) membuat segalanya lebih mudah untuk mendapatkan "yang benar";
- itu juga bahasa yang saya tahu lebih baik sehingga saya lebih nyaman dengan itu bahkan jika saya bisa menulis beberapa kode Python yang baik;
- potensi keuntungan dalam kecepatan eksekusi (tapi saya pikir itu tidak akan terlihat);
Namun, saya pikir mungkin ada beberapa kekurangan dan saya tidak yakin tentang dampak nyata karena saya belum mencoba:
- mungkin lebih lama untuk menulis kode (yang mengatakan saya tidak yakin karena saya cukup efisien dalam C ++ untuk menulis sesuatu yang bekerja dengan cepat, jadi mungkin untuk sistem ini tidak akan terlalu lama untuk menulis) (waktu kompilasi tidak boleh t menjadi masalah untuk kasus ini);
- Saya harus berasumsi bahwa semua file teks yang akan saya baca sebagai input dalam UTF-8, saya tidak yakin itu dapat dengan mudah diperiksa saat runtime di C ++ dan bahasa tidak akan memeriksa untuk Anda;
- perpustakaan di C ++ lebih sulit untuk dikelola daripada dalam bahasa scripting;
Saya kurang pengalaman dan pandangan jauh ke depan, jadi mungkin saya kehilangan kelebihan dan kekurangan. Jadi pertanyaannya adalah: apakah masuk akal untuk menggunakan C ++ untuk ini? apakah Anda memiliki pengalaman untuk melaporkan dan apakah Anda melihat kelebihan dan kekurangan yang mungkin penting?
sumber
Jawaban:
Cukup gunakan Python.
Saya mengembangkan C ++ dan membuat skrip build saya dengan Python, dan saya merasa sulit untuk membuat skrip build di C ++:
Mengenai keuntungan yang Anda daftarkan untuk C ++:
sumber
Saya yakin ini pertanyaan khusus. Saya akan mengklaim tidak ada jawaban yang benar apakah masuk akal atau tidak menggunakan C ++ untuk membangun skrip, satu-satunya cara untuk mengetahuinya adalah dengan mencobanya dalam praktik.
Secara pribadi saya akan melihat Python lebih unggul daripada C ++ karena ekspresi bahasa yang lebih baik dan alat perpustakaan standar yang lebih mudah (pendapat pribadi, tentu saja) untuk mengelola tugas memanipulasi file biner dan menghasilkan kode. Tentu saja, perpustakaan canggih yang dikembangkan untuk tugas itu mungkin tersedia, tetapi jika tidak, maka saya pribadi akan bertaruh untuk Python sebagai jawaban "lebih sering benar" - dalam kasus umum.
sumber
Jangan menulis skrip sendiri, Anda menduplikasi upaya dan menemukan kembali roda.
Gunakan sesuatu seperti SCONS atau bahkan Maven 3 yang memiliki dukungan untuk sistem C ++ build .
Sistem build yang baik, apa pun bahasanya tidak perlu memerlukan logika khusus dalam bentuk skrip untuk membangun artifak yang dapat dieksekusi yang berfungsi
Jika Anda harus menulis skrip untuk sistem build untuk menyesuaikannya, itu bukan sistem build yang baik. Menulis sebuah plugin untuk sistem build adalah cerita yang berbeda, tetapi tetap yang harus sangat khusus untuk lingkungan / perangkat keras kebanyakan, dan harus menjadi sesuatu yang jarang terpaksa.
sumber
Untuk fokus pada pertanyaan:
Jawabannya adalah tidak .
Jawaban yang saat ini diterima memperbesar ke python, dan daftar sejumlah masalah yang valid, tapi saya ingin menambahkan alasan independen bahasa:
Anda benar-benar tidak ingin apa-apa skrip di setiap bahasa dikompilasi jika Anda dapat membantu:
Selain itu, pergi dengan jawaban lain:
Mungkin Anda juga tidak ingin menggunakan bahasa skrip "mentah" untuk membuat skrip build Anda (saya mengerti bahwa seluk-beluk C ++ akan ditangani oleh CMake).
Yang mungkin harus Anda lakukan adalah memilih salah satu Build . Sistem . keluar . ada . dan lihat apakah ada yang sesuai dengan tagihan Anda. scriptability / extability / play-nice-with-CMake / crossplatformness.
sumber