เทมเพลต C++ ด่วนสำหรับโปรเจ็กต์ CMake สมัยใหม่ มุ่งหวังให้เป็นจุดเริ่มต้นที่ใช้งานง่าย
นี่เป็นการดำเนินการส่วนตัวของฉันกับเทมเพลตประเภทนี้ ดังนั้นฉันอาจไม่ใช้แนวทางปฏิบัติที่ดีที่สุดหรือคุณอาจไม่เห็นด้วยกับวิธีที่ฉันทำ ข้อเสนอแนะใด ๆ ทั้งหมดได้รับการชื่นชมอย่างมาก!
การกำหนดค่าและโปรเจ็กต์ CMake สมัยใหม่ ซึ่งตามความรู้ที่ดีที่สุดของฉัน ใช้แนวทางปฏิบัติที่ดีที่สุด
ตัวอย่างของการกำหนดค่า Clang-Format ซึ่งได้รับแรงบันดาลใจจากโมเดลพื้นฐาน ของ Google พร้อมการปรับแต่งเล็กน้อย นี่เป็นจุดเริ่มต้นเท่านั้น เนื่องจากรูปแบบการเขียนโค้ดเป็นเรื่องส่วนตัว ทุกคนมีอิสระที่จะลบมันออก (สำหรับค่าเริ่มต้นของ LLVM ) หรือจัดหาทางเลือกของตนเอง
การบูรณา การเครื่องวิเคราะห์แบบคง ที่กับ Clang-Tidy และ Cppcheck ซึ่งเดิมเป็นตัวเลือกเริ่มต้น
การสนับสนุน Doxygen ผ่านตัวเลือก ENABLE_DOXYGEN ซึ่งคุณสามารถเปิดใช้งานได้หากต้องการใช้
รองรับ การทดสอบหน่วย ผ่าน GoogleTest (พร้อมตัวเลือกในการเปิดใช้งาน GoogleMock ) หรือ Catch2
การครอบคลุมโค้ด เปิดใช้งานโดยใช้ตัวเลือก ENABLE_CODE_COVERAGE ผ่านการผสานรวม Codecov CI
การสนับสนุนตัวจัดการแพ็คเกจ ด้วย Conan และ Vcpkg ผ่านตัวเลือกที่เกี่ยวข้อง
เวิร์กโฟลว์ CI สำหรับ Windows, Linux และ MacOS โดยใช้ GitHub Actions โดยใช้คุณสมบัติการแคช เพื่อให้แน่ใจว่ารันไทม์ขั้นต่ำ
เทมเพลต .md สำหรับ: README , แนวทางการมีส่วนร่วม , ปัญหา และ คำขอดึง ,
ใบอนุญาตที่อนุญาต เพื่อให้คุณสามารถรวมเข้ากับระบบได้อย่างง่ายดายที่สุด เทมเพลตได้รับอนุญาตภายใต้ Unlicense
ตัวเลือกในการสร้างเป็นไลบรารีเฉพาะส่วนหัวหรือแบบปฏิบัติการได้ ไม่ใช่แค่ไลบรารีแบบคงที่หรือแบบแบ่งใช้
การรวม Ccache เพื่อเร่งเวลาการสร้างใหม่
คำแนะนำเหล่านี้จะทำให้คุณได้รับสำเนาของโปรเจ็กต์และทำงานบนเครื่องของคุณเพื่อการพัฒนาและการทดสอบ
โปรเจ็กต์นี้จัดทำขึ้นเพื่อใช้เป็นเทมเพลตเท่านั้น ดังนั้นเวอร์ชันของซอฟต์แวร์ที่ใช้จึงสามารถเปลี่ยนแปลงให้เหมาะกับความต้องการของนักพัฒนาได้ดียิ่งขึ้น หากคุณต้องการใช้เทมเพลต ตามที่เป็น ซึ่ง หมายถึงการใช้เวอร์ชันที่แนะนำที่นี่ คุณจะต้อง:
CMake v3.15+ - พบได้ที่ https://cmake.org/
C++ Compiler - ต้องรองรับมาตรฐาน C++17 เป็นอย่างน้อย เช่น MSVC , GCC , Clang
หมายเหตุ: คุณต้องสามารถจัดหาเครื่องกำเนิดที่รองรับ CMake ได้ด้วย
มันค่อนข้างง่ายในการติดตั้งโปรเจ็กต์ สิ่งที่คุณต้องทำคือโคลนถ้ามาจาก GitHub หรือสร้างที่เก็บใหม่จากโปรเจ็กต์ (บน GitHub เช่นกัน)
หากคุณต้องการโคลนพื้นที่เก็บข้อมูล แทนที่จะสร้างจากพื้นที่เก็บข้อมูล คุณเพียงแค่ต้องรัน:
git clone https://github.com/filipdutescu/modern-cpp-template/ หลังจากรับสำเนาของโปรเจ็กต์เสร็จแล้ว ด้วยวิธีใดๆ ข้างต้น ให้สร้างโฟลเดอร์ใหม่ในโฟลเดอร์ include/ พร้อมชื่อโปรเจ็กต์ของคุณ แก้ไข cmake/SourcesAndHeaders.cmake เพื่อเพิ่มไฟล์ของคุณ
คุณจะต้องเปลี่ยนชื่อไฟล์ cmake/ProjectConfig.cmake.in เพื่อเริ่มต้นด้วย ชื่อที่แน่นอนของโปรเจ็กต์ของคุณ เช่น cmake/MyNewProjectConfig.cmake.in คุณควรทำการเปลี่ยนแปลงเดียวกันในเวิร์กโฟลว์ GitHub ที่มีให้ โดยเฉพาะ .github/workflows/ubuntu.yml ซึ่งคุณควรแทนที่ตัวเลือก CMake -DProject_ENABLE_CODE_COVERAGE=1 เป็น -DMyNewProject_ENABLE_CODE_COVERAGE=1
สุดท้าย เปลี่ยน "Project" จาก CMakeLists.txt จาก
project (
"Project"
VERSION 0.1.0
LANGUAGES CXX
)เป็น ชื่อที่แน่นอนของโครงการของคุณ เช่น การใช้ชื่อก่อนหน้านี้จะกลายเป็น:
project (
MyNewProject
VERSION 0.1.0
LANGUAGES CXX
) หากต้องการติดตั้งโปรเจ็กต์ที่สร้างไว้แล้ว คุณต้องรันเป้าหมาย install ด้วย CMake ตัวอย่างเช่น:
cmake --build build --target install --config Release
# a more general syntax for that command is:
cmake --build < build_directory > --target install --config < desired_config > หากต้องการสร้างโปรเจ็กต์ สิ่งที่คุณต้องทำ หลังจากติดตั้งโปรเจ็กต์อย่างถูกต้องแล้ว คือเรียกใช้รูทีน CMake ที่คล้ายกันกับรูทีนด้านล่าง:
mkdir build/ && cd build/
cmake .. -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target installหมายเหตุ: สามารถละเว้น
CMAKE_INSTALL_PREFIXแบบกำหนดเองได้ หากคุณต้องการติดตั้งในตำแหน่งการติดตั้งเริ่มต้น
ตัวเลือกเพิ่มเติมที่คุณสามารถตั้งค่าสำหรับโปรเจ็กต์สามารถพบได้ในไฟล์ cmake/StandardSettings.cmake สำหรับตัวเลือกบางอย่างอาจจำเป็นต้องมีการกำหนดค่าเพิ่มเติมในไฟล์ *.cmake ที่เกี่ยวข้อง (เช่น Conan ต้องการ CONAN_REQUIRES และอาจจำเป็นต้องตั้ง CONAN_OPTIONS เพื่อให้ทำงานได้อย่างถูกต้อง โดยทั้งสองตัวเลือกได้รับการตั้งค่าไว้ในไฟล์ cmake/Conan.cmake )
ในการสร้างเอกสารประกอบสำหรับโปรเจ็กต์ คุณต้องกำหนดค่าบิลด์ให้ใช้ Doxygen ทำได้ง่ายๆ โดยปรับเปลี่ยนขั้นตอนการทำงานที่แสดงด้านบนดังนี้
mkdir build/ && cd build/
cmake .. -D < project_name > _ENABLE_DOXYGEN=1 -DCMAKE_INSTALL_PREFIX=/absolute/path/to/custom/install/directory
cmake --build . --target doxygen-docsหมายเหตุ: สิ่งนี้จะสร้างไดเร็กทอรี
docs/ใน ไดเร็กทอรีรากของโปรเจ็กต์
ตามค่าเริ่มต้น เทมเพลตจะใช้ Google Test สำหรับการทดสอบหน่วย การทดสอบหน่วยสามารถปิดใช้งานได้ในตัวเลือก โดยการตั้งค่า ENABLE_UNIT_TESTING (จาก cmake/StandardSettings.cmake) ให้เป็นเท็จ หากต้องการรันการทดสอบ เพียงใช้ CTest จากไดเร็กทอรี build โดยผ่านการกำหนดค่าที่ต้องการเพื่อทำการทดสอบ ตัวอย่างของขั้นตอนนี้คือ:
cd build # if not in the build directory already
ctest -C Release # or `ctest -C Debug` or any other configuration you wish to test
# you can also run tests with the `-VV` flag for a more verbose output (i.e.
# GoogleTest output as well)หากเป็นไปได้ควรนำเสนอที่นี่
หากเป็นไปได้ควรนำเสนอที่นี่
โปรดอ่าน CONTRIBUTING.md เพื่อดูรายละเอียดเกี่ยวกับวิธีที่คุณสามารถเป็นผู้มีส่วนร่วมและขั้นตอนในการส่งคำขอดึงมาให้เรา
โปรเจ็กต์นี้ใช้ SemVer สำหรับการกำหนดเวอร์ชัน รายการเวอร์ชันที่มีอยู่สามารถพบได้ในการเผยแพร่ของโปรเจ็กต์
โครงการนี้ได้รับอนุญาตภายใต้ Unlicense - ดูไฟล์ LICENSE เพื่อดูรายละเอียด