ตำราอาหาร CMake
พื้นที่เก็บข้อมูลนี้รวบรวมแหล่งที่มาสำหรับสูตรอาหารที่มีอยู่ในตำราอาหาร CMake จัดพิมพ์โดย Packt และประพันธ์โดย Radovan Bast และ Roberto Di Remigio
สารบัญ
บทที่ 1: จาก Simple Executable ไปจนถึง Libraries
- 1. รวบรวมไฟล์ต้นฉบับเดียวให้เป็นไฟล์ปฏิบัติการ
- 2. การสลับเครื่องกำเนิดไฟฟ้า
- 3. การสร้างและการเชื่อมโยงไลบรารีแบบคงที่และแบบแบ่งใช้
- 4. การควบคุมการคอมไพล์ด้วยเงื่อนไข
- 5. การนำเสนอทางเลือกให้กับผู้ใช้
- 6. การระบุคอมไพเลอร์
- 7. การสลับประเภทบิลด์
- 8. การควบคุมแฟล็กคอมไพเลอร์
- 9. การกำหนดมาตรฐานของภาษา
- 10. การใช้โครงสร้างโฟลว์การควบคุม
บทที่ 2: การตรวจจับสภาพแวดล้อม
- 1. การค้นพบระบบปฏิบัติการ
- 2. การจัดการกับซอร์สโค้ดที่ขึ้นอยู่กับแพลตฟอร์ม
- 3. การจัดการกับซอร์สโค้ดที่ขึ้นกับคอมไพเลอร์
- 4. การค้นพบสถาปัตยกรรมโปรเซสเซอร์โฮสต์
- 5. การค้นหาชุดคำสั่งของโปรเซสเซอร์โฮสต์
- 6. การเปิดใช้งาน vectorization สำหรับไลบรารี Eigen
บทที่ 3: การตรวจจับไลบรารีและโปรแกรมภายนอก
- 1. การตรวจจับล่าม Python
- 2. การตรวจจับไลบรารี Python
- 3. การตรวจจับโมดูลและแพ็คเกจ Python
- 4. การตรวจจับไลบรารีคณิตศาสตร์ BLAS และ LAPACK
- 5. การตรวจจับสภาพแวดล้อมแบบขนานของ OpenMP
- 6. การตรวจจับสภาพแวดล้อมแบบขนาน MPI
- 7. การตรวจจับห้องสมุด Eigen
- 8. การตรวจจับไลบรารี Boost
- 9. การตรวจจับไลบรารีภายนอก: I. การใช้
pkg-config
- 10. การตรวจจับไลบรารีภายนอก: II. การเขียนโมดูลค้นหา
บทที่ 4: การสร้างและดำเนินการทดสอบ
- 1. สร้างการทดสอบหน่วยอย่างง่าย
- 2. การกำหนดการทดสอบหน่วยโดยใช้ไลบรารี Catch2
- 3. การกำหนดการทดสอบหน่วยและการเชื่อมโยงกับการทดสอบของ Google
- 4. การกำหนดการทดสอบหน่วยและการเชื่อมโยงกับการทดสอบ Boost
- 5. การใช้การวิเคราะห์แบบไดนามิกเพื่อตรวจจับข้อบกพร่องของหน่วยความจำ
- 6. การทดสอบความล้มเหลวที่คาดหวัง
- 7. การใช้การหมดเวลาสำหรับการทดสอบที่ยาวนาน
- 8. ทำการทดสอบแบบขนาน
- 9. การรันชุดย่อยของการทดสอบ
- 10. การใช้อุปกรณ์ทดสอบ
บทที่ 5: การดำเนินการกำหนดค่าเวลาและเวลาสร้าง
- 1. การใช้การดำเนินการไฟล์ที่ไม่ขึ้นกับแพลตฟอร์ม
- 2. การรันคำสั่งแบบกำหนดเองในเวลากำหนดค่า
- 3. การรันคำสั่งแบบกำหนดเอง ณ เวลาบิลด์: I. การใช้
add_custom_command
- 4. การรันคำสั่งแบบกำหนดเองในขณะที่สร้าง: II. ใช้
add_custom_target
- 5. การรันคำสั่งแบบกำหนดเองสำหรับเป้าหมายเฉพาะในขณะสร้าง
- 6. รวบรวมและเชื่อมโยงการตรวจสอบ
- 7. ตรวจสอบแฟล็กคอมไพเลอร์
- 8. การดำเนินการสอบสวน
- 9. การปรับแต่งการกำหนดค่าและการคอมไพล์อย่างละเอียดด้วยนิพจน์ตัวสร้าง
บทที่ 6: การสร้างซอร์สโค้ด
- 1. การสร้างแหล่งที่มาในเวลากำหนดค่า
- 2. การสร้างซอร์สโค้ดในเวลากำหนดค่าโดยใช้ Python
- 3. การสร้างซอร์สโค้ด ณ เวลาสร้างโดยใช้ Python
- 4. บันทึกข้อมูลเวอร์ชันของโครงการเพื่อให้สามารถทำซ้ำได้
- 5. การบันทึกเวอร์ชันโปรเจ็กต์จากไฟล์
- 6. บันทึกแฮช Git ณ เวลากำหนดค่า
- 7. บันทึกแฮช Git ณ เวลาสร้าง
บทที่ 7: โครงการโครงสร้าง
- 1. การใช้โค้ดซ้ำพร้อมฟังก์ชันและมาโคร
- 2. การแยกซอร์ส CMake ออกเป็นโมดูล
- 3. การเขียนฟังก์ชันเพื่อทดสอบและตั้งค่าสถานะคอมไพเลอร์
- 4. การกำหนดฟังก์ชันหรือแมโครด้วยอาร์กิวเมนต์ที่มีชื่อ
- 5. นิยามฟังก์ชันและมาโครใหม่
- 6. การเลิกใช้งานฟังก์ชัน มาโคร และตัวแปร
- 7. การจำกัดขอบเขตด้วย
add_subdirectory
- 8. หลีกเลี่ยงตัวแปรโกลบอลโดยใช้
target_sources
- 9.จัดโครงการฟอร์แทรน
บทที่ 8: รูปแบบ Superbuild
- 1. การใช้รูปแบบซุปเปอร์บิลด์
- 2. การจัดการการพึ่งพาด้วย superbuild: I. ไลบรารี Boost
- 3. การจัดการการพึ่งพาด้วย superbuild: II. ห้องสมุด FFTW
- 4. การจัดการการพึ่งพาด้วย superbuild: III. กรอบการทดสอบของ Google
- 5. การจัดการโครงการของคุณในฐานะซุปเปอร์บิลด์
บทที่ 9: โครงการผสมภาษา
- 1. การสร้างโปรเจ็กต์ Fortran ที่ใช้ไลบรารี C/C++
- 2. การสร้างโปรเจ็กต์ C/C++ ที่ใช้ไลบรารี Fortran
- 3. การสร้างโปรเจ็กต์ C++ และ Python โดยใช้ Cython
- 4. การสร้างโปรเจ็กต์ C++ และ Python โดยใช้ Boost.Python
- 5. การสร้างโปรเจ็กต์ C++ และ Python โดยใช้ pybind11
- 6. การผสม C, C++, Fortran และ Python โดยใช้ Python CFFI
บทที่ 10: การเขียนตัวติดตั้ง
- 1. การติดตั้งโครงการของคุณ
- 2. การสร้างส่วนหัวการส่งออก
- 3. ส่งออกเป้าหมายของคุณ
- 4. การติดตั้งซุปเปอร์บิลด์
บทที่ 11: โครงการบรรจุภัณฑ์
- 1. การสร้างซอร์สและแพ็คเกจไบนารี
- 2. แจกจ่ายโปรเจ็กต์ C++/Python ที่สร้างด้วย CMake/pybind11 ผ่าน PyPI
- 3. แจกจ่ายโปรเจ็กต์ C/Fortran/Python ที่สร้างด้วย CMake/CFFI ผ่าน PyPI
- 4. แจกจ่ายโปรเจ็กต์ง่ายๆ เป็นแพ็คเกจ Conda
- 5. การกระจายโปรเจ็กต์ที่มีการขึ้นต่อกันเป็นแพ็คเกจ Conda
บทที่ 12: เอกสารประกอบอาคาร
- 1. การสร้างเอกสารโดยใช้ Doxygen
- 2. การสร้างเอกสารโดยใช้สฟิงซ์
- 3. การรวม Doxygen และ Sphinx
บทที่ 13: เครื่องกำเนิดไฟฟ้าทางเลือกและการรวบรวมข้าม
- 1. รวบรวมตัวอย่างสวัสดีชาวโลก
- 2. การคอมไพล์ข้ามไบนารีของ Windows ด้วย OpenMP แบบขนาน
บทที่ 14: การทดสอบแดชบอร์ด
- 1. การปรับใช้การทดสอบไปยังแดชบอร์ด CDash
- 2. รายงานความครอบคลุมการทดสอบไปยังแดชบอร์ด CDash
- 3. การใช้ AddressSanitizer และรายงานข้อบกพร่องของหน่วยความจำไปยัง CDash
- 4. การใช้ ThreadSanitizer และการรายงานข้อมูลแข่งกับ CDash
บทที่ 15: การย้ายโปรเจ็กต์ไปยัง CMake