У меня есть проект, в котором имеется только несколько логических групп для создания статических библиотек. Однако для удобства я хочу, чтобы исходный код библиотеки управлялся с более подробными папками.Управление иерархическим проектом CMake без злоупотребления библиотеками
В настоящее время единственный способ, которым я знаю, чтобы сделать это в CMake, не имея библиотеку для каждой папки, это просто список файлов, как обычно в их относительных путях:
add_library(SystemAbstraction STATIC "Some/Path/File.cpp")
Однако я могу видеть это становится громоздкий, поскольку проект растет по размеру со всеми разными путями.
Я попытался выяснить, могу ли я иметь CMakeLists.txt в каждой папке и просто использовать переменную в базовом CMakeLists.txt при добавлении зависимостей библиотек. Но похоже, что add_subdirectory не импортирует переменные?
ли й работа для любой глубины? Или мне нужно сделать это для каждой родительской папки. – BlamKiwi
Объем распространяется вверх только на один уровень. В CMakeLists.txt на промежуточном уровне вам, по крайней мере, нужно иметь 'set (SRCS $ {SRCS} PARENT_SCOPE)', которому должны предшествовать любые команды 'add_subdirectory'. –
Работал как шарм. – BlamKiwi