Недавно я начал настраивать свою собственную библиотеку и проекты с использованием кроссплатформенной системы сборки (генерирует файлы make, решения / проекты Visual Studio и т. Д. По запросу), и я столкнулся с проблемой, которая, вероятно, уже решена.
Проблема, с которой я столкнулся, заключается в следующем: если у приложения есть зависимость, которая также имеет зависимости, то приложение, с которым выполняется связь, должно связать зависимость, а также все ее подчиненные зависимости. Это происходит рекурсивно, например,
(Ради аргументов давайте предположим, что мы имеем дело исключительно со статическими библиотеками.)
- TopLevelApp.exe
- dependency_A
- dependency_A-1
- dependency_A-2
- dependency_B
Таким образом, в этом примере TopLevelApp нужно будет связать зависимость_А, зависимость_А-1, зависимость_А-2 и т. Д. И то же самое для B. Я думаю, что ответственность за запоминание всего этого вручную в целевом приложении довольно неоптимальная. Существует также проблема обеспечения того, чтобы одна и та же версия зависимости использовалась во всех целях (при условии, что некоторые цели зависят от одних и тех же вещей, например, повышение).
Теперь необходимо связать все библиотеки, и способа их обойти невозможно. То, что я ищу, это система сборки, которая управляет этим для вас. Поэтому все, что вам нужно сделать, это указать, что вы зависите от чего-то, и соответствующие зависимости этой библиотеки будут загружены автоматически.
Система сборки, на которую я смотрел, - premake premake4 , которая не справляется с этим (насколько я могу судить). Кто-нибудь знает о системе сборки, которая справляется с этим? а если нет, то почему бы и нет?