Продукт, над которым я работаю, не слишком отличается от этого. Мы используем систему сборки на основе autoconf, и она работает довольно хорошо.
Место, которое вы потратите больше всего времени, это поддержка пользователей. Пользовательские системы будут иметь разного рода морщины, которых вы не ожидаете, пока не столкнетесь с ними, и вам потребуется добавить дополнительные параметры конфигурации для их поддержки. Со временем мы добавили опции для установки путей include и lib для каждой библиотеки, от которой мы зависим; мы добавили опции для изменения флагов компиляции, чтобы обходить различные странные сбои в различных версиях этих библиотек (или переходы API от одной версии к другой, которые требуют изменений в нашем коде), мы добавили обходные пути для того факта, что некоторые библиотеки BLAS использовать интерфейс C, а некоторые - интерфейс Fortran, поэтому, хотя они теоретически являются реализациями одной и той же библиотеки, они делают некоторые вещи немного по-другому и так далее. Вы не можете ожидать всего этого заранее, и это также требует документирования, чтобы пользователи могли выяснить, какие параметры устанавливать.
Да, и установщики действительно являются проблемой, потому что они, как правило, зависят от ОС (если это не просто сценарий оболочки, и вам не нужен CygWin), и места для установки, как правило, зависят от ОС, и так далее. Это еще одна область, которая займет время - либо в создании хорошего установщика, либо в поддержке пользователей в настройке вручную.
Настройка кросс-компиляции, по моему опыту, стоит потраченных усилий (по крайней мере, в случае Linux-to-Windows; не уверен в MacOS / X) - гораздо проще, чем пытаться сохранить несколько разных систем сборки в синхронизации.
В качестве альтернативы, есть вариант, который проект OpenFOAM использует для своей довольно большой библиотеки C ++, которая заключается в том, чтобы распространять ее вместе с «одобренным» компилятором G ++ и пакетами для всех других компонентов, чтобы они не надо беспокоиться о разных компиляторах и тому подобное. Но это действительно работает только на одной ОС. Я предполагаю, что версия для Windows / MacOSX предназначена для предустановленных образов VMWare. В некоторых случаях для этого есть что сказать ....