Buku Masak CMake
Repositori ini mengumpulkan sumber resep yang terdapat dalam CMake Cookbook yang diterbitkan oleh Packt dan ditulis oleh Radovan Bast dan Roberto Di Remigio
Daftar isi
Bab 1: Dari Eksekusi Sederhana ke Perpustakaan
- 1. Mengkompilasi satu file sumber menjadi file yang dapat dieksekusi
- 2. Pergantian genset
- 3. Membangun dan menghubungkan perpustakaan statis dan bersama
- 4. Mengontrol kompilasi dengan kondisional
- 5. Menyajikan pilihan kepada pengguna
- 6. Menentukan kompiler
- 7. Mengganti tipe build
- 8. Mengontrol flag compiler
- 9. Menetapkan standar bahasa
- 10. Menggunakan konstruksi aliran kontrol
Bab 2: Mendeteksi Lingkungan
- 1. Menemukan sistem operasi
- 2. Berurusan dengan kode sumber yang bergantung pada platform
- 3. Berurusan dengan kode sumber yang bergantung pada kompiler
- 4. Menemukan arsitektur prosesor host
- 5. Menemukan set instruksi prosesor host
- 6. Mengaktifkan vektorisasi untuk perpustakaan Eigen
Bab 3: Mendeteksi Perpustakaan dan Program Eksternal
- 1. Mendeteksi juru bahasa Python
- 2. Mendeteksi perpustakaan Python
- 3. Mendeteksi modul dan paket Python
- 4. Mendeteksi perpustakaan matematika BLAS dan LAPACK
- 5. Mendeteksi lingkungan paralel OpenMP
- 6. Mendeteksi lingkungan paralel MPI
- 7. Mendeteksi perpustakaan Eigen
- 8. Mendeteksi perpustakaan Boost
- 9. Mendeteksi perpustakaan eksternal: I. Menggunakan
pkg-config
- 10. Mendeteksi perpustakaan eksternal: II. Menulis modul temukan
Bab 4: Membuat dan Menjalankan Tes
- 1. Membuat pengujian unit sederhana
- 2. Mendefinisikan pengujian unit menggunakan perpustakaan Catch2
- 3. Mendefinisikan pengujian unit dan menghubungkannya dengan Google Test
- 4. Mendefinisikan pengujian unit dan menghubungkannya dengan pengujian Boost
- 5. Menggunakan analisis dinamis untuk mendeteksi cacat memori
- 6. Menguji kegagalan yang diperkirakan
- 7. Menggunakan batas waktu untuk tes yang panjang
- 8. Menjalankan tes secara paralel
- 9. Menjalankan subset pengujian
- 10. Menggunakan alat uji
Bab 5: Operasi Waktu Konfigurasi dan Waktu Pembuatan
- 1. Menggunakan operasi file yang tidak bergantung pada platform
- 2. Menjalankan perintah khusus pada waktu konfigurasi
- 3. Menjalankan perintah khusus pada waktu pembuatan: I. Menggunakan
add_custom_command
- 4. Menjalankan perintah khusus pada waktu build: II. Menggunakan
add_custom_target
- 5. Menjalankan perintah khusus untuk target tertentu pada waktu pembuatan
- 6. Probing kompilasi dan linking
- 7. Menyelidiki flag compiler
- 8. Eksekusi probing
- 9. Menyempurnakan konfigurasi dan kompilasi dengan ekspresi generator
Bab 6: Menghasilkan Kode Sumber
- 1. Menghasilkan sumber pada waktu konfigurasi
- 2. Menghasilkan kode sumber pada waktu konfigurasi menggunakan Python
- 3. Menghasilkan kode sumber pada waktu pembuatan menggunakan Python
- 4. Merekam informasi versi proyek agar dapat direproduksi
- 5. Merekam versi proyek dari sebuah file
- 6. Merekam hash Git pada waktu konfigurasi
- 7. Merekam hash Git pada waktu pembuatan
Bab 7: Penataan Proyek
- 1. Penggunaan kembali kode dengan fungsi dan makro
- 2. Memisahkan sumber CMake menjadi modul
- 3. Menulis fungsi untuk menguji dan menyetel flag compiler
- 4. Mendefinisikan fungsi atau makro dengan argumen bernama
- 5. Mendefinisikan ulang fungsi dan makro
- 6. Penghentian fungsi, makro, dan variabel
- 7. Membatasi cakupan dengan
add_subdirectory
- 8. Menghindari variabel global menggunakan
target_sources
- 9. Pengorganisasian proyek Fortran
Bab 8: Pola Superbuild
- 1. Menggunakan pola superbuild
- 2. Mengelola dependensi dengan superbuild: I. Pustaka Boost
- 3. Mengelola dependensi dengan superbuild: II. Perpustakaan FFTW
- 4. Mengelola dependensi dengan superbuild: III. Kerangka Uji Google
- 5. Mengelola proyek Anda sebagai bangunan super
Bab 9: Proyek Bahasa Campuran
- 1. Membangun proyek Fortran yang menggunakan pustaka C/C++
- 2. Membangun proyek C/C++ yang menggunakan perpustakaan Fortran
- 3. Membangun proyek C++ dan Python menggunakan Cython
- 4. Membangun proyek C++ dan Python menggunakan Boost.Python
- 5. Membangun proyek C++ dan Python menggunakan pybind11
- 6. Mencampur C, C++, Fortran, dan Python menggunakan Python CFFI
Bab 10: Menulis Installer
- 1. Menginstal proyek Anda
- 2. Menghasilkan header ekspor
- 3. Mengekspor target Anda
- 4. Memasang superbuild
Bab 11: Proyek Pengemasan
- 1. Menghasilkan paket sumber dan biner
- 2. Mendistribusikan proyek C++/Python yang dibangun dengan CMake/pybind11 melalui PyPI
- 3. Mendistribusikan proyek C/Fortran/Python yang dibangun dengan CMake/CFFI melalui PyPI
- 4. Mendistribusikan proyek sederhana sebagai paket Conda
- 5. Mendistribusikan proyek dengan dependensi sebagai paket Conda
Bab 12: Dokumentasi Bangunan
- 1. Dokumentasi bangunan menggunakan Doxygen
- 2. Dokumentasi bangunan menggunakan Sphinx
- 3. Menggabungkan Doxygen dan Sphinx
Bab 13: Generator Alternatif dan Kompilasi Silang
- 1. Kompilasi silang contoh hello world
- 2. Kompilasi silang biner Windows dengan paralelisasi OpenMP
Bab 14: Menguji Dasbor
- 1. Menerapkan pengujian ke dasbor CDash
- 2. Melaporkan cakupan tes ke dashboard CDash
- 3. Menggunakan AddressSanitizer dan melaporkan kerusakan memori ke CDash
- 4. Menggunakan ThreadSanitizer dan melaporkan data race ke CDash
Bab 15: Memindahkan Proyek ke CMake