El producto en el que trabajo no es muy diferente de esto. Usamos un sistema de compilación basado en autoconf, y funciona bastante bien.
El lugar donde pasará la mayor parte del tiempo, de lejos, es apoyar a los usuarios. Los sistemas de los usuarios tendrán todo tipo de arrugas que no espera hasta que las encuentre, y deberá agregar más opciones de configuración para admitirlas. Con el tiempo, hemos agregado opciones para establecer las rutas de inclusión y lib para cada biblioteca de la que dependemos; hemos agregado opciones para cambiar los indicadores de compilación para solucionar varios errores técnicos extraños en varias versiones de esas bibliotecas (o cambios de API de una versión a otra que necesitan cambios en nuestro código), hemos agregado soluciones para el hecho de que algunas bibliotecas BLAS usa una interfaz C y algunos utilizan una interfaz Fortran, por lo que, aunque teóricamente son implementaciones de la misma biblioteca, hacen algunas cosas de forma ligeramente diferente, y así sucesivamente. No puede prever todo esto por adelantado, y también necesita documentación para que los usuarios puedan determinar qué opciones establecer.
Ah, y los instaladores son realmente un problema, porque generalmente dependen del sistema operativo (a menos que sea solo un script de shell y requiera CygWin), y las ubicaciones para instalar tienden a depender del sistema operativo, y así sucesivamente. Esa es otra área que tomará tiempo, ya sea en la construcción de un buen instalador, o en el apoyo a los usuarios para configurar manualmente las cosas.
Configurar la compilación cruzada es, en mi experiencia, bien valer la pena (al menos para el caso de Linux a Windows, no estoy seguro de MacOS/X) - mucho más fácil que tratar de mantener múltiples sistemas de compilación diferentes en sintonía.
Como perspectiva alternativa, existe la opción que el proyecto OpenFOAM utiliza para su biblioteca C++ bastante grande, que es distribuirla junto con un compilador G ++ "aprobado" y paquetes para todos los demás componentes, para que no lo hagan Tengo que preocuparme por diferentes compiladores, etc. Pero eso realmente solo funciona en un sistema operativo. Supongo que la versión de Windows/MacOSX de eso es para proporcionar imágenes VMWare preconfiguradas. En algunos casos, hay algo que decir acerca de eso ....
Puede considerar utilizar un sistema de compilación multiplataforma como CMake. –