Alternativas a Autoconf y Autotools? [cerrado]


Soy un usuario muy frecuente de GNU Autotools (mayormente Autoconf, ocasionalmente Libtool). Estoy trabajando en un proyecto donde la portabilidad va a ser un punto de fricción.. Sin embargo, el resto del equipo no se siente cómodo trabajando con m4. Recibí esto en mi bandeja de entrada no de una, sino de cuatro personas:

m4 NO es ceceo, maldita sea!

De todos modos, tal vez alguien podría recomendar algo basado en Python o PHP? Estoy trabajando en el extremo C de un árbol mucho más grande; puede estar seguro de que Python o PHP 5 estarán presentes, ya que son requisitos previos.

Author: Community, 2009-03-01

9 answers

He oído cosas buenas sobre CMake que trata de resolver los mismos problemas. Aquí está el artículo de wikipedia

 33
Author: epatel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-01 18:54:43

Estoy tomando la oportunidad de ser votado en contra, pero, debo admitir, que desafortunadamente no hay un sustituto real para autotools. CMake, SCons, bjam son agradables pero, cuando se trata de trabajo serio... está bastante claro que autotools es superior, no porque CMake no pueda hacer lo mismo, sino porque es mucho más difícil hacerlo con él.

Por ejemplo, CMake, la alternativa más popular a autotools, tiene los siguientes inconvenientes:

  • No hay soporte de gettext. Esto puede ser un problema real cuando necesita administrar una gran cantidad de traducciones y código fuente traducido.
  • No hay soporte para un destino de desinstalación. Es bastante desagradable descubrir que no puede desinstalar el programa que instaló.
  • No hay compilación automática de ambas bibliotecas compartidas y estáticas.
  • La documentación es muy limitada y mala.

Y así sucesivamente.

Hay muchos otros puntos. Desafortunadamente, no hay un sustituto real de alta calidad para autotools. Por otro lado, si desarrolla en Windows y para Visual Studio, entonces no puede usar autotools y debe elegir CMake que proporciona dichas herramientas.

 46
Author: Artyom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-21 15:50:32

He tenido un buen éxito con SCons. Está construido con Python y los scripts de compilación son en realidad scripts de Python, lo que le da una gran cantidad de poder expresivo. Desde el sitio web:

SCons es una herramienta de construcción de software de Código abierto, es decir, una herramienta de construcción de próxima generación. Piense en SCons como un sustituto mejorado y multiplataforma para la utilidad clásica Make con funcionalidad integrada similar a autoconf/automake y cachés de compiladores como ccache. En resumen, SCons es una forma más fácil, fiable y rápida de crear software.

 38
Author: Greg Hewgill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-01 19:02:37

Hay muchos generadores de Makefile alternativos diferentes y sistemas de construcción por ahí:

También disponible, pero no estrictamente dirigido a C/C++:

  • Premake
  • Ant (para Java)
  • Rake (para Ruby)
  • (Definitivamente más, simplemente no los conozco a todos...)

Pero después de enumerar todos estos, autotools tiene la gran ventaja de no requerir ninguna otra dependencia para el usuario final. Un script configure solo es generado una vez por el desarrollador y no requiere nada especial por parte del usuario, ya que es un script de shell. Las herramientas enumeradas anteriormente deben instalarse antes de que alguien pueda construir su fuente e incluso pueden tener dependencias.

 18
Author: raimue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-02 18:22:05

¿Qué tal simplemente usar Make y pkg-config?

Aquí hay una plantilla Makefile para empezar.

Menos es más gente.

 14
Author: hendry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-16 11:14:50

Un auto* reemplazo más - mk-configure. Los documentos se pueden encontrar aquí

 4
Author: citrin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-27 12:27:57

He echado un vistazo a CMake, que parece una buena alternativa a menos que esté compilando de forma cruzada. Si estás haciendo compilación nativa, deberías probarlo

 2
Author: shodanex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-01 19:17:23

Hay una versión de python de make que se está creando en Mozilla - pymake - que presumiblemente soporta el uso multiplataforma.

 1
Author: Pete Kirkham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-01 19:33:39

Para crear software de C/C++ desde ANT o maven puede que le interese terp. Incluye una tarea de compilador de C++ portátil que funciona con muchos compiladores de C++ en muchas plataformas.

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-13 18:47:11