Limitare il comportamento di GNU ‑ Make a POSIX Make


12

Esiste un modo noto per fare in modo che Linux makerifiuti l'uso involontario di GNU ‑ Make estensioni specifiche in Makefile durante la modifica o l'utilizzo di altri Makefile in Linux? Voglio dire, limitare GNU ‑ Make a comportarsi come makespecificato in POSIX e rifiutare eventuali estensioni specifiche di GNU ‑ Make?

Il .POSIXtarget speciale non è sufficiente, secondo " 4.9 Nomi target incorporati speciali (gnu.org) ". La pagina man non menziona un'opzione da riga di comando per questo.

L'uso di un'altra makeutility può essere un'opzione.

- Aggiornamento 2018-10-19 -

Non ho ancora trovato una risposta diretta alla mia domanda, ma qui c'è almeno un documento su questo problema, un documento che non esisteva al momento in cui avevo questa domanda:  un Tutorial su Portable Makefile (nullprogram.com) .


Guardando questo elenco , non è chiaro che ci sia o sia mai stato solo un POSIX rigoroso, quindi forse ha più senso iniziare invece con quello makeche era destinato all'uso con il "Makefile dell'altro" in questione. Hai anche detto che il " .POSIXtarget di GNU non è abbastanza, secondo" la tua lettura di alcuni documenti, ma non lo hai dimostrato con un caso reale, che è un po ' problematico XY .
Riccioli d'oro

@goldilocks, la X riguarda il controllo di una restrizione a cui vorrei attenermi (per l'editing e la modifica) a causa della mancanza di padronanza delle specificità di GNU ‑ Make e per aiutarmi a essere consapevole della presenza di alcune specificità (quando ce ne sono). Il controllo degli occhi è soggetto a errori, non può essere meccanizzato e preferisco evitare i filtri grep / sed / awk predisposti per errori per controllare e attirare la mia attenzione.
Hibou57,

Non sono neanche un mago del trucco, ma non sarebbe meglio chiederlo direttamente? (In tal caso, Stack Overflow potrebbe essere un posto migliore per questo.)
goldilocks

Potresti avere ragione. A proposito, dopo averlo pubblicato, ho prima eliminato e poi cancellato di nuovo questa domanda (non ero sicuro del posto). In seguito potrei chiedere nuovamente su Stack Overflow come suggerisci. Grazie per la tua preoccupazione.
Hibou57,

Risposte:


6

Sono abbastanza sicuro che non c'è modo di disabilitare GNU make extension. Il .POSIXtarget migliora la compatibilità ma non disabilita le estensioni compatibili come funzioni, target dot proprietari, %pattern in target, ecc.

Non conosco nessuna 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 buona garanzia di portabilità nella pratica. Aggiungi Windows con l' makeutilità di Visual Studio, oltre a una porta di alcuni strumenti shell Unix, se puoi usare un sistema operativo non libero (penso che ci sia una versione gratuita di VS che sarebbe sufficiente).


3
Su Debian Linux, sto usando pmakeper testare la portabilità dei miei makefile. Afferma che ha un sapore da NetBSD. (Nelle versioni più recenti di Debian lo è bmake.)
Palec,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.