¿Hay alguna forma conocida de hacer que Linux make
rechace el uso no intencionado de GNU-Make extensiones específicas en Makefile al editar o usar el Makefile de otros en Linux? Quiero decir, ¿restringir GNU-Make para que se comporte como se make
especifica en POSIX y rechazar cualquier extensión específica de GNU-Make?
El .POSIX
objetivo especial no es suficiente, de acuerdo con " 4.9 Nombres de objetivos integrados especiales (gnu.org) ". La página del manual no menciona una opción de línea de comando para esto.
Usar otra make
utilidad puede ser una opción.
- Actualización 2018-10-19 -
Todavía no he encontrado una respuesta directa a mi pregunta, pero aquí hay al menos un documento sobre este problema, un documento que no existía en el momento en que tenía esta pregunta: un tutorial sobre Makefiles portátiles (nullprogram.com) .
make
que estaba destinada para usarse con el "Makefile del otro" en cuestión. También ha dicho que el ".POSIX
objetivo de GNU " no es suficiente, según " su lectura de alguna documentación, pero no ha demostrado esto con un caso real, lo cual es un poco problemático XY .Respuestas:
Estoy bastante seguro de que no hay forma de desactivar las extensiones de creación de GNU. El
.POSIX
objetivo mejora la compatibilidad, pero no deshabilita extensiones compatibles como funciones, objetivos de puntos propietarios,%
patrones en objetivos, etc.No conozco ninguna implementación de marca que se adhiera a las características de POSIX. Por ejemplo, MINIX, Solaris, OpenBSD tienen sus propias extensiones. Al menos podría intentar construir sus programas con estas cuatro implementaciones (suponiendo que sus programas se construyan en todas estas plataformas), lo que le dará una garantía de portabilidad bastante buena en la práctica. Agregue Windows con la
make
utilidad de Visual Studio, más un puerto de algunas herramientas de shell Unix, si puede usar un sistema operativo no libre (creo que hay una versión gratuita de VS que sería suficiente).fuente
pmake
para probar la portabilidad de mis archivos MAKE. Afirma que es sabor de NetBSD. (En versiones más recientes de Debian lo esbmake
.)