Existuje nějaký známý způsob, jak vytvořit v Linuxu make
odmítnout nezamýšlené použití specifických rozšíření GNU-Make v Makefile při úpravách nebo používání jiných Makefile v Linuxu? Myslím tím omezení GNU-Make, aby se chovalo jako make
specifikované v POSIX a odmítnout jakákoli specifická rozšíření GNU-Make?
.POSIX
speciální cíl nestačí, podle „4.9 Special Built-in Target Names (gnu.org)“. Manová stránka pro to nezmiňuje volbu příkazového řádku.
Použití jiného make
utilita může být možností.
— Aktualizace 2018-10-19 —
Stále jsem nenašel přímou odpověď na svou otázku, ale zde je alespoň dokument o tomto problému, dokument, který v době, kdy jsem měl tuto otázku, neexistoval: Výukový program pro přenosné soubory Makefiles (nullprogram.com).
Přijatá odpověď:
Jsem si docela jistý, že neexistuje způsob, jak zakázat rozšíření GNU make. .POSIX
target zlepšuje kompatibilitu, ale nezakazuje kompatibilní rozšíření, jako jsou funkce, proprietární tečkové cíle, %
vzory v cílech atd.
Nevím o žádné implementaci značky, která by se držela funkcí POSIX. Například MINIX, Solaris, OpenBSD mají svá vlastní rozšíření. Můžete se alespoň pokusit vytvořit své programy pomocí těchto čtyř implementací (za předpokladu, že vaše programy staví na všech těchto platformách), což vám v praxi poskytne docela dobrou jistotu přenositelnosti. Přidejte Windows pomocí make
nástroj z Visual Studia plus port některých unixových shell nástrojů, pokud můžete použít nesvobodný OS (myslím, že existuje bezplatná verze VS, která by stačila).