ฉันต้องการคำแนะนำเกี่ยวกับองค์กรของชุดโครงการ C ++ ที่เกี่ยวข้อง แต่เป็นอิสระที่เก็บไว้ในที่เก็บ (git) เดียว โครงการใช้ CMake
สำหรับตัวอย่างที่ง่ายเรานึกภาพ 2 โครงการ A และ B ขึ้นอยู่กับ B. คนส่วนใหญ่ที่พัฒนา A จะได้รับ B ผ่านระบบบรรจุภัณฑ์ ดังนั้นพวกเขาจะรวบรวมเพียง A. อย่างไรก็ตามเราควรอนุญาตให้นักพัฒนาคอมไพล์ทั้ง A และ B เอง (และติดตั้ง) แยกกันหรือรวมกัน
นี่คือข้อเสนอ:
└── Repo1
├── CMakeLists.txt (1)
├── A
│ ├── CMakeLists.txt (2)
│ ├── include
│ │ ├── aaa.h
│ │ ├── aaaa.h
│ │ └── CMakeLists.txt (3)
│ └── src
│ ├── aaa.cpp
│ ├── aaaa.cpp
│ └── CMakeLists.txt (4)
├── B
│ ├── CMakeLists.txt (2)
│ ├── include
│ │ ├── bbb.h
│ │ ├── bbbb.h
│ │ └── CMakeLists.txt (3)
│ └── src
│ ├── bbb.cpp
│ ├── bbbb.cpp
│ └── CMakeLists.txt (4)
└── test
├── CMakeLists.txt (5)
└── testaaaa.cpp
(1) กำหนดตัวแปร cmake ทั่วไปสำหรับทุกโครงการ (ถ้ามี) และรวมถึงไดเรกทอรีย่อย (2) กำหนดโครงการและตัวแปร cmake ที่จำเป็นของโครงการ (3) กำหนดส่วนหัวที่จะติดตั้งและสิ่งที่จำเป็นสำหรับการรวบรวม (4) กำหนดค่าไลบรารีและไบนารี (5) กำหนดค่าไฟล์ทดสอบทดสอบและกรณีทดสอบ
ตามที่ฉันเข้าใจแล้วแต่ละโครงการควรสร้างไฟล์ XXXConfig.cmake และติดตั้งใน / usr / local / share / cmake การเขียนไฟล์เหล่านี้ดูค่อนข้างซับซ้อนเมื่ออ่านเอกสารของ CMake
คุณคิดอย่างไร ? โครงสร้างเหมาะสมหรือไม่
คุณมีตัวอย่างการทำงานของชุดโครงการดังกล่าวหรือไม่?
CMakeLists.txt
ไฟล์ต่อโครงการ:A/CMakeLists.txt
(แอป) รวมถึงB/CMakeLists.txt
(ห้องสมุด)add_subdirectory(...)
โดยใช้