2010-02-17 10 views
21

¿Qué tan similares/diferentes son gnu make, microsoft nmake y posix standard make?¿Qué tan similares/diferentes son gnu make, microsoft nmake y posix standard make?

Obviamente hay cosas como "¿qué sistema operativo?", "¿Qué compilador?" y "¿qué enlazador?", pero me refiero específicamente a la sintaxis, la semántica y las opciones de línea de comandos de los archivos MAKE mismos.

Si escribo makefiles basados ​​en manuales para gnu make, ¿cuáles son los problemas de portabilidad más importantes que debo tener en cuenta?

+0

Relacionado: [Restringir GNU-Make a POSIX Hacer comportamiento @ Unix.SE] (http://unix.stackexchange.com/q/144424/50602) Lamentablemente no parece haber forma de lograr eso, usted solo puede usar el objetivo especial '.POSIX' que todavía deja muchas extensiones habilitadas. – Palec

Respuesta

10

GNU Make y POSIX Haga que se comparta un núcleo común para que GNU Make comprenda los archivos MAK creados para POSIX y los interpreta de la misma manera, con muy pocas excepciones. Sin embargo, muchos Makefiles de GNU usan características que solo están disponibles en GNU Make. Algunas veces esto es deliberado y consciente; a veces no es (y "a veces no es" es un problema). Estoy menos familiarizado con Microsoft nmake; Creo que es probable que se acerque a la semántica de POSIX Make en su núcleo, pero tendrá su propio conjunto divergente de extensiones.

En términos generales, lo que los programas como autoconf producen están cerca de Makefiles portátiles.

Las principales cosas a tener en cuenta al usar GNU Make son todas las notaciones de funciones extendidas para mapear nombres de archivos (macros) en valores útiles. Si bien son indudablemente útiles, también son una trampa para la portabilidad.

Los '% .x' notaciones para las reglas de sufijo no se definen por POSIX - son reconocidos como una extensión común:

La interpretación de los objetivos que contienen los caracteres '%' y '"' es definido por la implementación.

+0

Me he encontrado varias veces con el programa make de aix. Yuck. ¿Es estrictamente POSIX o es algo más que estándar? – Anycorn

+0

@unknown: está bastante cerca de POSIX Make, en algún lugar entre eso y uno de los programas de creación de System V. POSIX Make es prácticamente un subconjunto común de las diversas variantes de fabricación. –

+2

También las opciones de línea de comandos (relevantes para la variable 'MAKEFLAGS'), los objetivos especiales (mayúsculas, comenzando con el punto) y las reglas incorporadas varían enormemente. Pero, p. El objetivo especial '.PHONY' parece ser compatible incluso fuera del mundo de Gnu Make. Creo que la única forma segura es probar tus archivos MAKE. Si quieres ir a lo seguro, cumple con POSIX a pesar de que define una marca muy limitada. – Palec

Cuestiones relacionadas