Existe-t-il un moyen connu de créer le make
de Linux rejeter l'utilisation involontaire d'extensions spécifiques à GNU-Make dans Makefile lors de l'édition ou de l'utilisation du Makefile d'un autre sous Linux ? Je veux dire, restreindre GNU-Make pour qu'il se comporte comme le make
spécifié dans POSIX et rejeter toutes les extensions spécifiques à GNU-Make ?
Le .POSIX
la cible spéciale n'est pas suffisante, selon "4.9 Noms de cibles intégrés spéciaux (gnu.org)". La page de manuel ne mentionne pas d'option de ligne de commande pour cela.
Utiliser un autre make
utilitaire peut être une option.
— Mise à jour 2018-10-19 —
Je n'ai toujours pas trouvé de réponse directe à ma question, mais voici au moins un document sur ce problème, un document qui n'existait pas au moment où j'avais cette question : A Tutorial on Portable Makefiles (nullprogram.com).
Réponse acceptée :
Je suis presque sûr qu'il n'y a aucun moyen de désactiver les extensions GNU make. Le .POSIX
target améliore la compatibilité mais ne désactive pas les extensions compatibles telles que les fonctions, les cibles de points propriétaires, %
modèles dans les cibles, etc.
Je ne connais aucune implémentation de make qui colle aux fonctionnalités POSIX. Par exemple MINIX, Solaris, OpenBSD ont tous leurs propres extensions. Vous pourriez au moins essayer de construire vos programmes avec ces quatre implémentations (en supposant que vos programmes se construisent sur toutes ces plates-formes), ce qui vous donnera une assez bonne assurance de portabilité dans la pratique. Ajouter Windows avec le make
utilitaire de Visual Studio, plus un portage de certains outils shell Unix, si vous pouvez utiliser un système d'exploitation non libre (je pense qu'il existe une version gratuite de VS qui suffirait).