Я работаю над кроссплатформенным проектом, в котором используется большое количество сторонних библиотек (сейчас их 22, и я рассчитываю, что это число значительно увеличится). Мой проект основан на CMake и поддерживает каталог ThirdParty / как:
ThirdParty / $ Имя_библиотеки / включить /
ThirdParty / $ Имя_библиотеки / Библиотека / $ Платформа / $ buildtype /
Мой CMakeLists.txt имеет логику для определения соответствующих значений для $ platform (mac-i386, mac-ia64, win32-i386 и т. Д.) И $ buildtype (отладка / выпуск).
Сложность заключается в том, чтобы поддерживать эти библиотеки в актуальном состоянии для каждой платформы. В настоящее время я делаю это вручную - когда я обновляю одну библиотеку, я иду и перестраиваю ее для каждой платформы. Но это кошмар, и добавление новой платформы - это двухдневное дело.
Это было бы легко автоматизировать, если бы сторонние библиотеки сами основывались на CMake, но они используют все, от CMake до autoconf, до пользовательских решений для созданных вручную Make-файлов. Между ними нет никакой согласованности, и все они требуют, чтобы различные прыжки были проложены в отношении построения платформы (особенно в отношении 32- и 64-разрядных сборок).
Существуют ли какие-либо инструменты (или расширения CMake), которые облегчили бы управление? Есть ли хоть какая-то разумная точка соприкосновения, например, между CMake и autoconf?
Идеальное решение - дать мне единственную команду для сборки всего, что требует перестройки для данной платформы (кросс-компиляция не нужна, поскольку у меня есть доступ ко всем необходимым платформам), но все, что постепенно облегчает мою жизнь, будет оценили.