Esiste un modo noto per creare make
di Linux rifiutare l'uso non intenzionale di estensioni specifiche di GNU-Make in Makefile durante la modifica o l'utilizzo di Makefile di altri in Linux? Voglio dire, limitando GNU-Make a comportarsi come make
specificato in POSIX e rifiutare qualsiasi estensione specifica di GNU‑Make?
Il .POSIX
obiettivo speciale non è sufficiente, secondo "4.9 Nomi speciali di destinazione incorporati (gnu.org)". La pagina man non menziona un'opzione da riga di comando per questo.
Usando un altro make
l'utilità potrebbe essere un'opzione.
— Aggiornamento 19-10-2018 —
Non ho ancora trovato una risposta diretta alla mia domanda, ma ecco almeno un documento su questo problema, un documento che non esisteva al momento in cui ho posto questa domanda: A Tutorial on Portable Makefiles (nullprogram.com).
Risposta accettata:
Sono abbastanza sicuro che non ci sia modo di disabilitare le estensioni GNU make. Il .POSIX
target migliora la compatibilità ma non disabilita le estensioni compatibili come funzioni, dot target proprietari, %
modelli negli obiettivi, ecc.
Non conosco alcuna implementazione di marca che si attenga alle funzionalità POSIX. Ad esempio MINIX, Solaris, OpenBSD hanno tutti le proprie estensioni. Potresti almeno provare a costruire i tuoi programmi con queste quattro implementazioni (supponendo che i tuoi programmi si basino su tutte queste piattaforme), il che ti darà una garanzia di portabilità abbastanza buona in pratica. Aggiungi Windows con make
utilità di Visual Studio, oltre a un port di alcuni strumenti della shell Unix, se puoi utilizzare un sistema operativo non libero (penso che ci sia una versione gratuita di VS che sarebbe sufficiente).