단일 (git) 저장소에 저장된 관련이 있지만 독립적 인 C ++ 프로젝트 세트에 대한 조언을 원합니다. 프로젝트는 CMake를 사용합니다.
간단한 예를 들어 B에 따라 2 개의 프로젝트 A와 B, A가 있다고 가정합니다. 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
(앱) includeB/CMakeLists.txt
(라이브러리) usingadd_subdirectory(...)
.