В нашей компании мы используем первый вариант, имея CMakeLists.txt в каждом подкаталоге и собирая дерево из root-CMakeLists.txt с помощью команды add_subdirectory
.
Этомодульный подход, при котором каждый подкомпонент (представьте, что у проекта есть разные части, такие как boost, разделен на system, thread, date_time и т. д.) имеет свой собственный файл сборки.Если пользователь хочет, он может просто построить субкомпонент или построить весь проект.
Мы дополнительно используем это как простой способ включить дополнительные субкомпоненты в проект.Затем пользователь может установить значение Bool, например BUILD_SUBFOO
, и add_subdirectory
будет просто выполняться, если этот Bool равен TRUE
.
. Известные проекты также используют этот подход.Вот ссылка на корень CMakeLists.txt из KDevelop (смотрите строки 52-62).