¿Por qué nadie ha creado un sistema de generación de código abierto para la muerte cerebral? [cerrado]

StackOverflow https://stackoverflow.com/questions/1596279

Pregunta

Quiero construir una biblioteca compartida. GNU / Linux es la plataforma de desarrollo y el objetivo. C es el lenguaje de implementación.

No se puede decidir cómo Quiero fijar el sistema de construcción y tener que revolotean en torno a tres opciones de cada uno de los cuales tiene un montón de razones que no les gusta:

  • hechos a mano Makefile - He trabajado de esta manera casi exclusiva en el pasado
  • GNU Autotools -. Me usó autotools a principios de este año para construir una biblioteca compartida de C, pero se han olvidado de cómo lo hice y donde estaban todos los muchos cientos de tutoriales que he usado para cosechas
  • WAF -. Supuestamente simple, pero no es tan fácil Tengo que trabajar esta tarde

No se puede decidir qué para ir. Me conformo en uno, a continuación, empezar a trabajar encontrado un problema y decidir el otro sistema es mejor. Estoy atascado pegado pegado. ¿Alguien puede arrojar algo de luz sobre esto, por favor que podría ayudarme a resolver el asunto?

¿Fue útil?

Solución

Aquí hay algunos enlaces (y citas de sitio) a las herramientas que he notado en los últimos años:

Premake : Usted es el gerente de un proyecto de software. Sus usuarios a los que están pidiendo un archivo de área de trabajo de Visual Studio, pero que no tienen Visual Studio! O tal vez usted es un desarrollador de Windows luchando para mantenerse en sincronía Makefile para un puerto Linux. Es un problema común para los proyectos de código abierto: restringido a los usuarios a una sola herramienta de construcción - alejar posibles contribuyentes - manualmente o mantener dos, tres o más conjuntos de scripts de construcción. Introduzca Premake.

CMake : Bienvenido a CMake, el multi-plataforma, sistema de construcción de código abierto. CMake es una familia de herramientas diseñadas para crear, probar y software de paquete. CMake se utiliza para controlar el proceso de compilación de software utilizando la plataforma simple y archivos de configuración independientes del compilador. CMake genera makefiles nativos y espacios de trabajo que se pueden utilizar en el entorno del compilador de su elección.

buildconf : Comenzó como sólo un pequeño script de preparación de construcción ... y con los años se ha convertido en bastante útil me ahorra tiempo y esfuerzo con las solicitudes de soporte y la compilación multiplataforma utilidad. Es el mismo tipo de escritura a menudo se encuentran comúnmente entre los proyectos de construcción que utilizan el sistema GNU - también conocido simplemente como el Autotools GNU o para cada herramienta individual como Autoconf, Automake y Libtool. Estos proyectos suelen tener un script de ayuda de encargo por escrito que prepara el sistema de construcción para los desarrolladores de su proyecto, por lo general se ejecuta diversas herramientas como libtoolize, autoconf, o autoreconf. Este script se nombra a menudo ya sea buildconf o autogen.sh pero la intención es la misma: para preparar su sistema de construcción para la compilación

BSDBuild : BSDBuild (anteriormente CSOFT-mk) es un sistema simple, autónomo y portátil de construcción derivada de los archivos share / mk 4.4BSD tradicional. BSDBuild permite que los archivos make-BSD, pero sin extensiones maquillaje BSD (que utiliza fragmentos de secuencias de comandos estándar en lugar de Bourne), por lo que el sistema de construcción es portátil para la mayoría de sistemas operativos y sabores maquillaje.

iCompile : iCompile el sistema de acumulación de configuración cero

OMAKE :. (OCaml) OMAKE es un sistema de construcción diseñado para la escalabilidad y portabilidad

BakeFile : Bakefile es multiplataforma, compilador cruzado generador de archivos make nativos. Toma Descripción compilador independiente de las tareas de construcción como entrada y genera makefile nativa (Makefile.in, Visual C ++ proyecto de autoconf, bcc makefile etc.).

SCons es una herramienta de construcción de software, es decir, una herramienta de construcción de nueva generación de código abierto. Piense en SCons como una mejora, el sustituto de multi-plataforma para la utilidad Make clásico con funcionalidad integrada similar a autoconf/automake y cachés compilador como ccache. En resumen, SCons es una manera más fácil, más fiable y más rápido al software de generación.

Make del proyecto : 'Crear proyecto' es una escritura del golpe que hace que proyectan esqueletos. Se automatiza la tarea de iniciar un nuevo proyecto con la información proporcionada desde la línea de comandos. El paquete creado por defecto es un proyecto 'hola mundo' del esqueleto seleccionados que utiliza el autotools que deben gestionarse.

Unmaintained o proyectos muertas (07-2012)

cppmake : Cppmake es un front-end para hacer que construye los programas en C ++ con menos esfuerzo y más precisión que la escritura makefiles manualmente.

aerosol : Spray es una herramienta de construcción que le ayuda en la configuración, la construcción y la instalación de su proyecto Se es similar en propósito a las autotools o CMake sino que creó siguiendo el espíritu de SCons y WAF utilizando el lenguaje de programación Python.

Otros consejos

Bueno: Todos los sistemas de succión. Algunos sólo chupar menos. como dice el perro callejero Mailer. Dicho esto, algunos comentarios rápidos:

  • Qt es bastante agradable y bien documentado, y me gusta el. pro archivos uno crea. Además de que es fiable multiplataforma de libro y ahora recibe entornos de desarrollo, etc. si lo desea.
  • CMake es lo que usamos en el trabajo, y es multiplataforma demasiado , uno puede acostumbrarse a ella, pero todavía me resulta peculiar.
  • GNU Autoconf et al es lo que uso para mis proyectos . Peculiar, pero me acostumbré a él y una bazillion ejemplos en los intertubes de trabajo.
  • Scons tal vez?

Dado que el propósito de su sistema de construcción es la instalación de la biblioteca en los sistemas de destino, se debe utilizar una de las herramientas genéricas a todos los que instalaciones el software está familiarizado.

Así que el propósito principal del sistema es la acumulación capacidades de configuración flexible.

Lo que todo el mundo puede trabajar es CMake y Autotools . Se adhieren a ellos.

Yo uso mkproject ( Make del proyecto ) mucho. Es evidente cosas autotools como la gente sugiere usar, pero lo hace cargar la configuración por defecto un poco como un generador de proyecto IDE, por defecto mínimos pero útiles muy cuerdo. El resto depende de usted para administrar por autotools llanos justos (información de configuración, información de autoconf, automake información son sus ayudantes aquí, que por cierto sigue estrictamente mkproject).

Siempre se inicia un proyecto con algunos procedimientos básicos, editar una edición configure.ac un Makefile.am, ..., mkproject hace sólo que sin invadir la capa autotools o la adición de una nueva sintaxis. El fresco es que por los argumentos que personaliza sus autotools proyecto desde cero, el tiempo y los errores de ahorro.

Si utiliza autotools y generar al azar / un montón de proyectos, darle una oportunidad, viene con la página hombre y la información e incluso el sitio web dice cómo usarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top