将 GNU‑Make 限制为 POSIX Make 行为

将 GNU‑Make 限制为 POSIX Make 行为

make在 Linux 中编辑或使用其他 Makefile 时,是否有一种已知的方法可以让 Linux拒绝在 Makefile 中意外使用 GNU-Make 特定扩展?我的意思是,限制 GNU‑Make 的行为makePOSIX 中指定并拒绝任何 GNU-Make 特定扩展?

根据“特殊.POSIX目标还不够”4.9 特殊内置目标名称 (gnu.org)”。手册页没有提到这方面的命令行选项。

使用其他make实用程序可能是一种选择。

— 更新2018-10-19 —

我仍然没有找到我的问题的直接答案,但这里至少有一个关于这个问题的文档,该文档在我提出这个问题时不存在: 可移植 Makefile 教程 (nullprogram.com)

答案1

我很确定没有办法禁用 GNU make 扩展。该.POSIX目标提高了兼容性,但不会禁用兼容的扩展,例如函数、专有点目标、%目标中的模式等。

我不知道有任何 make 实现坚持 POSIX 功能。例如 MINIX、Solaris、OpenBSD 都有自己的扩展。您至少可以尝试使用这四种实现来构建您的程序(假设您的程序确实在所有这些平台上构建),这将为您在实践中提供相当好的可移植性保证。make如果您可以使用非自由操作系统(我认为有一个免费版本的 VS 就足够了),请使用 Visual Studio 中的实用程序添加 Windows ,以及一些 Unix shell 工具的端口。

相关内容