9 poin oleh regentag 2024-11-05 | 10 komentar | Bagikan ke WhatsApp

CMake semakin terasa sebagai solusi yang buruk untuk C++. Bukan hanya gagal memenuhi kebutuhan pengembang C++, tetapi juga membuat kita tetap berada di zaman kegelapan membangun makefile dengan cara yang sangat tidak jelas dan tidak terstruktur, menggunakan bahasa yang tidak konsisten.

Masalah

Ada dua jenis masalah di dunia build C++.

  1. Masalah yang diciptakan sendiri oleh proyek yang sudah ada (maksud penulis: masalah membangun proyek besar yang sudah eksis)
  2. Masalah yang dihadapi saat memilih proyek baru di C++

CMake berusaha menyelesaikan masalah pertama, dan sama sekali tidak menyelesaikan masalah kedua. Namun karena tidak berusaha menyelesaikan masalah-masalah ini, ia menjadi alat yang kurang berguna.

CMake ingin menjadi penerjemah yang mengubah definisi proyek menjadi sistem build, dan gagal total dalam hal ini. Ini adalah bahasa definisi proyek yang buruk, tidak konsisten, dan tidak intuitif.

Seluruh komunitas C++ kini membicarakan alat-alat milik Rust. Itu karena Cargo benar-benar melakukan hal-hal yang menurut sebagian besar pengembang mereka butuhkan. Cargo mengunduh dependensi dari internet untuk membuat toolkit yang terisolasi (ide yang buruk), dan menyediakan pustaka yang ditautkan secara statis (juga ide yang buruk). Orang sebenarnya tidak membutuhkan alat yang menambahkan celah keamanan dengan kecepatan luar biasa (maksud penulis: penulis berargumen bahwa cara Cargo mengambil kode secara otomatis dari internet lalu menautkannya menciptakan kerentanan dari sisi keamanan seperti serangan rantai pasok. Lihat I Hate Rust ), tetapi yang benar-benar disediakan Cargo memang dibutuhkan:

  1. Struktur proyek yang sangat ketat
  2. Sistem konfigurasi yang sangat sederhana yang bergantung pada server eksternal untuk menyelesaikan masalah lokasi pustaka
  3. Hanya satu perangkat alat.

Orang sebenarnya membutuhkan kebebasan yang lebih sedikit agar bisa fokus pada pekerjaan, dan mereka tidak mahir memanggil compiler dengan cara yang paling sempurna.

Solusi

Belum ada solusi. Saya sedang menulis klb di waktu luang, tetapi untuk sekarang itu belum menjadi solusi. (Butuh waktu dan uang.)

Namun, sudah jelas apa yang dibutuhkan orang. Bukan lebih banyak opsi, melainkan lebih sedikit opsi. Opsi yang lebih sedikit berarti lebih sedikit cara untuk merusak kompilasi proyek.

CMake saat ini masih merupakan opsi terbaik di dunia C++, tetapi juga merupakan hal terburuk yang terjadi pada C++ dalam 20 tahun terakhir. Semua hal lain membaik, tetapi sistem build justru semakin buruk.

10 komentar

 
bobcat 2024-11-06

Sintaksnya memang agak berantakan, tapi tetap saja tidak ada yang menandingi CMake.
Kalau harus menjalankan sesuatu seperti M4 di lingkungan non-POSIX, rasanya bikin pusing.
Dari awal saya memang tidak suka kalau lingkungan build dipenuhi macam-macam komponen tambahan, jadi saya tidak terlalu tertarik dengan meson atau scone, dan premake juga terasa seperti ada yang kurang beres, jadi akhirnya saya pakai CMake saja, sebisa mungkin sesederhana mungkin hanya untuk mendefinisikan kode.

 
haven04 2024-11-05

Sudah lama saya memakai CMake sambil terus menggerutuinya, tapi kenyataannya memang tidak ada yang benar-benar sebanding dengan CMake. bazel benar-benar neraka.. Kalau memulai proyek baru, sepertinya saya akan mempertimbangkan meson.

 
cherrycoder 2024-11-05

Bagaimana dengan Meson atau Bazel?

 
regentag 2024-11-05

Saya juga belum pernah memakai keduanya, jadi kurang tahu...
Secara pribadi, untuk proyek kecil saya suka memakai gprbuild.

 
joonhwan 2024-11-05

Metode selain CMake juga sama rumitnya
Kalau untuk lintas platform, setidaknya.....

 
regentag 2024-11-05

Itulah mengapa Visual Studio tampaknya populer. Karena Anda bisa langsung mulai ngoding.
Kalau dibedah sampai detail, topik ini juga memang tidak ada habisnya.

 
secret3056 2024-11-05

Cuma melihat CMake saja sudah bikin mual...

 
kayws426 2024-11-06

Menurut saya, CMake sebaiknya dipahami bukan sebagai pengganti make, melainkan sebagai pengganti autotools (automake).

 
regentag 2024-11-05

Meski begitu, rasanya ini tetap lebih baik daripada sekadar Makefile.
Bulan lalu saya harus menganalisis lingkungan build yang terdiri dari beberapa Makefile yang saling terkait dengan shell script, Perl, dan variabel lingkungan OS, dan itu benar-benar bikin gila.

 
kayws426 2024-11-05

Begitu mencoba melakukan sesuatu secara mendetail, Anda akan masuk ke lubang kelinci...