makefile portability nmake gnu-make

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



portability gnu-make (1)

GNU Make y POSIX Make comparten un núcleo común para que GNU Make entienda los makefiles destinados a POSIX Make y los interprete de la misma manera, con muy pocas excepciones. Sin embargo, muchos archivos GNU Makefile usan características que solo están disponibles en GNU Make. A veces esto es deliberado y consciente; a veces no lo es (y "a veces no" es un problema). Estoy menos familiarizado con Microsoft nmake; Creo que es probable que se asemeje a la semántica de POSIX Make en su núcleo, pero tendrá su propio conjunto de extensiones divergentes.

En general, lo que los programas como autoconf producen están cerca de los Makefiles portátiles.

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

Las notaciones ''% .x'' para reglas de sufijo no están definidas por POSIX , se reconocen como una extensión común:

La interpretación de los objetivos que contienen los caracteres ''%'' y ''"'' está definida por la implementación.

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

Obviamente hay cosas como "¿Qué sistema operativo?", "¿Qué compilador?" y "¿qué vinculador?", pero me refiero específicamente a las opciones de sintaxis, semántica y línea de comando de los propios archivos make.

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