Occa: dukungan cmake

Dibuat pada 8 Okt 2018  ·  11Komentar  ·  Sumber: libocca/occa

Hai OCCA-ers,

Adakah rencana untuk memiliki cmake untuk menghasilkan sistem build?
Semua perangkat lunak komputasi ilmiah kami menggunakannya. Ini membutuhkan upaya yang baik tetapi tidak membayar setelah dilakukan.

Terbaik,

Amik

question help wanted

Semua 11 komentar

2 sen saya...

Banyak paket perangkat lunak yang saya gunakan (misalnya, VTK) dikonfigurasi dan dibuat menggunakan cmake, tetapi saya tidak menyukainya. Tidak begitu banyak untuk bahasa dan kode cmake yang harus ditulis, melainkan untuk "komponen" makefile yang sangat tidak jelas yang dihasilkannya ke dalam struktur direktori yang dalam dan dikaburkan. Jadi mencari tahu mengapa cmake gagal, atau mengapa ada sesuatu yang tidak dikompilasi dengan benar, atau cara mengubah build, bisa menjadi upaya yang tidak sepele (setidaknya bagi saya).

Menghasilkan makefile untuk lingkungan build saat ini per spesifikasi konfigurasi umumnya merupakan hal yang baik, tetapi apa pun generatornya, haruskah IMHO hanya menghasilkan makefile tunggal, datar, langsung yang dapat dibaca dan berpotensi dapat di-tweak (seperti konfigurasi 'venerable' ' melakukan). Itu pasti bukan cmake!

Hai Paulus,

Saya tidak menyukainya tetapi setelah diinstal dalam sebuah proyek, itu cukup solid. Keuntungan utama dari itu adalah integrasi dan pengujian. Misalnya - misalkan - saya akan mulai mengintegrasikan OCCA ke dalam kode yang agak besar, saya akan memasukkan sumbernya ke dalam direktori yang disebut pihak ke-3, dan, jika menggunakan cmake, saya hanya akan memberi tahu cmake tentang direktori baru add_directory(...) . Kemudian akan membangun OCCA secara otomatis, menggunakan kompiler dan spesifikasi lain dari CMakeLists.txt "atas". Jika saya menambahkan dependensi ke OCCA di driver uji (awalnya) dan ke lebih banyak sumber/direktori lain nanti, itu akan sangat mudah.

Pengalaman saya dengan cmake, adalah bahwa jika Anda memiliki masalah pada tingkat "make", biasanya masalahnya adalah bahwa Anda terlalu banyak mengkhususkan diri (misalnya memaksa flag compiler eksplisit...) cmake di tingkat atas. Untuk sebagian besar masalah make VERBOSE=1 akan menampilkan baris kompilasi lengkap (yang dapat Anda potong & tempel) untuk mencari tahu apa yang salah (& kemudian ubah cmake (bukan make)).

Kami juga menggunakan ctest sepanjang waktu...

Bagaimanapun, hanya ingin menguji air mengenai hal ini.

Terbaik,

Amik

Saya penggemarnya ( mungkin terlalu banyak ), pada kenyataannya, dukungan CMake adalah hal pertama yang saya cari. Saya mengelola semua dependensi (misalnya di GooFit ) sebagai submodul git di extern, dan kemudian CMake akan memeriksanya untuk pengguna jika mereka tidak tahu tentang submodul, kemudian CMake menggabungkan semua dependensi. Hal yang hebat tentang CMake adalah mendukung cara kerja apa pun - jika saya ingin menggunakan IDE, misalnya, seperti Xcode, itu mudah hanya jika CMake digunakan. Saya dapat menambahkan CCache, debug build, clang-tidy, dll dengan cukup mudah.

@henryiii Jika memiliki integrasi IDE, itu terdengar seperti ide yang bagus!

Saya ragu untuk menghapus build Makefile karena make dapat ditemukan di luar kotak di sebagian besar tempat, tetapi kami dapat menambahkan dukungan CMake di sampingnya. Kita dapat memperbarui konfigurasi CI untuk menjalankan pengujian dengan build make dan cmake .

Jika Anda punya waktu, dapatkah Anda membuat PR untuk itu dengan file inti CMake? Jika itu membantu, saya dapat menambahkan semua variabel lingkungan / efek samping yang diharapkan selama waktu pembuatan

Saat ini, pengguna OCCA baru/calon (programmer HPC) hanya perlu mendownload source OCCA, dan ketik make . Sangat sederhana. Bagi saya, proposisi nilai OCCA didasarkan 100% pada fitur luar biasa yang disediakannya dalam domain pemrograman paralel, bukan dalam sistem pembuatannya. Namun demikian, mungkin akan ada nilai tambah kecil bagi OCCA untuk pindah ke build berbasis cmake, saya tidak tahu.

Mungkin seseorang yang ahli dalam pengkodean cmake dapat menulis file cmake yang diperlukan dan menyumbangkannya ke OCCA melalui permintaan tarik? Itu mungkin membantu memuaskan kekhawatiran yang tampaknya dimiliki beberapa orang dan membantu mereka beralih untuk benar-benar menggunakan OCCA.

Kembali ke topik cmake, bagi sebagian dari kita, "jarak tempuh mungkin berbeda." Serius, saya yakin antusiasme saya untuk cmake akan meningkat pesat jika saya benar-benar belajar cara menulis / men-debug / memodifikasi kode bahasa cmake pada tingkat di luar tahap pra-pemula saya saat ini. Sementara itu, ketika saya menghadapi masalah yang membuat frustrasi dengan file $#$2$# CMakeLists.txt seseorang yang ditulis dengan buruk / kedaluwarsa dan/atau buggy atau file Find*.cmake yang ditulis dengan buruk berfungsi dengan baik untuk beberapa paket yang baru saja saya unduh github untuk evaluasi, saya dapat memiliki sensasi apresiasi negatif yang tidak menyenangkan!

@pdhahn Hanya untuk memperjelas, saya rasa saya tidak akan pernah menyingkirkan build "hanya ketik make untuk dikompilasi". Jelas perlu dibersihkan (#149) tetapi membuat instalasi dan penggunaan menjadi mudah bagi pengguna adalah prioritas nomor satu di sini

Menambahkan CMake akan membantu menggunakan OCCA dalam proyek yang sudah menggunakan CMake dan sepertinya membuat hidup pengembang lebih mudah dengan integrasi IDE ini.

@dmed256 Anda benar, hal IDE terdengar seperti itu bisa menjadi nilai tambah yang tidak sepele untuk OCCA!

Tetapi Anda harus mengakomodasi minimal berbagai IDE populer, seperti Eclipse dan Qt Creator.

CMake mendukung semua jenis alat (dan semua jenis alat mendukungnya), bukan hanya IDE. Semua IDE utama didukung oleh CMake atau CMake mendukungnya. CLion, Qt Creator, Eclipse, Xcode, dan banyak lagi. Ini juga mendukung link-what-you-use, include-what-you-use, clang-tidy, ccache, berbagai integrasi pengujian, pengemasan, dan banyak lagi.

Jika build CMake bekerja dengan baik, Anda akhirnya dapat membuat Makefile cukup memanggil CMake untuk Anda, saya telah melakukannya sebelumnya di GooFit. Anda bahkan mungkin memiliki makefile yang mengunduh CMake dan kemudian memanggilnya (saya belum pernah mencobanya sebelumnya, tetapi saya pikir saya telah berbicara dengan seseorang yang memilikinya); ini akan memungkinkannya bekerja di mana saja dan dengan versi terbaru (Anda hanya perlu memiliki sakelar sederhana yang mengunduh biner linux atau macos tergantung di mana Anda menjalankan).

Saya berharap untuk mengevaluasi occa dalam beberapa minggu ke depan, dan kemudian mungkin dapat membantu dengan dukungan CMake.

@henryiii Itu masuk akal, kami hanya punya banyak waktu :) Bagaimanapun, hargai saran CMake itu!

Penutup terima kasih untuk semua pekerjaan dari @hknibbe2 , @SFrijters , @amikstcyr , dan @JamesEggleton

Apakah halaman ini membantu?
0 / 5 - 0 peringkat