Недавно я начал настраивать свою собственную библиотеку и проекты с использованием системы кросс-платформенной сборки (генерирует файлы make, визуальные студийные решения/проекты и т. Д. По запросу), и я столкнулся с проблемой, которая, вероятно, была уже решена.Система сборки с агрегированием рекурсивных зависимостей
Проблема, с которой я столкнулся, заключается в следующем: когда приложение имеет зависимость, которая также имеет зависимости, тогда связанное приложение должно связывать зависимость, а также все ее подзависимости. Это происходит рекурсивным способом, например,
(Для аргументов ради давайте предположим, что мы имеем дело исключительно со статическими библиотеками.)
- TopLevelApp.exe
- dependency_A
- dependency_A-1
- dependency_A-2
- dependency_B
- dependency_B-1
- dependency_B-2
- dependency_A
Таким образом, в этом примере TopLevelApp нужно будет связать dependency_A, dependency_A-1, dependency_A-2 и т.д., и то же самое для Б. Я считаю, что ответственность за запоминание всех этих вручную в целевом приложении довольно суба оптимальна. Также существует проблема обеспечения одинаковой версии зависимости для всех целей (предполагая, что некоторые цели зависят от одних и тех же вещей, например, boost).
Теперь требуется связывание всех библиотек, и нет возможности обойти его. То, что я ищу, - это система сборки, которая управляет этим для вас. Таким образом, все, что вам нужно сделать, это указать, что вы зависите от чего-то, и соответствующие зависимости этой библиотеки будут автоматически вставляться.
Система сборки, на которую я смотрел, - это premake4, которая не справляется с этим (насколько я могу судить). Кто-нибудь знает о системе сборки, которая справляется с этим? и если нет, то почему нет?
так выглядит, как cmake выполнит эту работу, знает ли кто-нибудь о других? Скуны, automake? – radman
вы можете добиться этого с помощью automake через pkg-config. –
спасибо Майкл, я думаю, что о всей необходимой мне информации. Похоже, я буду перемещать свои усилия по созданию cmake :) – radman