2008-08-13 18 views

Respuesta

34

Otras sugerencias que pueda tener en cuenta:

  • Scons es una biblioteca de acumulación compilador cruzado multiplataforma, utiliza Python scruipting de los sistemas de construcción. Se usa en una variedad de proyectos grandes y funciona muy bien.

  • Si está utilizando Qt, QMake es un buen sistema de construcción también.

  • CMake es también muy dulce.

  • Por último, If all else fails...

8

¿Has probado Automatic Makefile Generator?

Es compatible con los siguientes compiladores:

Borland 3.1 
Borland 5.0 
Borland 5.0, 16 bit 
Borland 5.5 
Borland 5.6 
Borland 5.8 
CC 
Gnu g++ 
Gnu g++, dynamic library 
Intel 5, 6, 7 for Linux 
Intel 5, 6, 7 for Linux, dynamic library 
Intel 5, 6, 7 for windows 
Intel 8,9,10 for Linux 
Intel 8,9,10 for Linux, dynamic library 
Intel 8,9 for windows 
Intel 10 for windows 
Visual C++ 5 
Visual C++ 6, 7, 7.1 
Visual C++ 8 
Open Watcom 
Watcom 10A 
Watcom 10A, 16 bit 
1

También voy a CMake segundos. Lo he usado durante bastante tiempo en un proyecto multiplataforma y estoy muy satisfecho con él.

0

Un problema a considerar es ¿quieres un creador "makefile" o un sistema de compilación de reemplazo? El problema con los sistemas de compilación de reemplazo es que normalmente no se obtiene una buena integración IDE para las plataformas cuyos usuarios esperan esto (Visual C++). Si usted quiere un creador de makefile en lugar de un sistema de compilación de reemplazo, eche un vistazo al MPC. Es gratis y de código abierto.

4

He usado Bakefile anteriormente con algo de éxito. Es bastante simple y parece funcionar bien.

2

La generación automática de (M | m) akefiles me hace preocuparme por lo que estás tratando de hacer aquí.

¿Entiende lo que sucede bajo las sábanas cuando escribe? O gmake? Solo estoy preguntando porque si no lo haces cuando se rompen cosas, como que los nuevos cambios de código no se incorporen a la compilación, tendrás dificultades para tratar de resolver lo que sucedió.

Para empezar a comprender hacer, puedo sugerir que tenga una lectura de "Managing Projects with GNU Make" de Robert Mecklenberg. Los primeros capítulos cubren cómo funciona make. Entender el hecho de que hacer un encadenamiento hacia atrás es una de las cosas más importantes que puede hacer.

Si no lo hace, y parece que su sistema funciona, entonces, para usar el término de los programadores pragmáticos, "programming by coincidence". (-:!..

Por cierto Grandes artículos disponibles en su sitio y no estoy involucrado con ellos YMMV Yada-bla ...

4

CMake es la única herramienta que realmente puede generar proyectos reales de Visual Studio (es decir, no "Makefile" -proyectos que llaman a una herramienta externa) y que recrea automáticamente los proyectos cuando el archivo de entrada de compilación (CMakeLists.txt) cambia.

Los problemas de rendimiento de SCons son bien conocidos y un tema ampliamente debatido en las listas de correo de SCons.

3

Yo votaría por OMake. Arregla todas las quejas que tuve con GNU marca:

  • es un lenguaje en toda regla.
  • utiliza MD5 en lugar de marcas de tiempo.
  • proporciona un shell mínimo que implementa los comandos de Unix más útiles en todas las plataformas: find, sed, awk, etc ...
  • funciona con nombres de rutas de estilo unix o dos.
  • ampliamente documentado.
  • admite compilaciones paralelas.
  • rápido.
0

Una reciente adición a la lista de reemplazos es waf. Desde la experiencia personal SCONS hace el trabajo bastante bien.

0

No sé si usted ya tiene interés en esta pregunta. Estoy trabajando en una proyección similar de autogenerador Makefile llamada CodeMate, desarrollada mediante el uso de Ruby. Tal vez no sea tan maduro para grandes aplicaciones en este momento, pero seguiré trabajando para mejorarlo. Los usuarios no deberían necesitar editar ningún archivo de configuración para construir el software, o al menos se supone que debe serlo. La curva de aprendizaje debe ser minimizada.

+1

¡Otro enlace de SO muerto! Fui de forma manual a su página de GitHub, y lo que veo allí es que CodeMate es solo una construcción de Fortran. ¿Creaste otro proyecto con el mismo nombre? [Este] (https://github.com/shepherddog/CodeMate) parece que podría ser lo que quieres decir. – refi64

Cuestiones relacionadas