将GNU-Make限制为POSIX Make行为


12

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

.POSIX专项的目标是不够的,按照“ 4.9特别内置目标名(gnu.org) ”。手册页中没有提到用于此目的的命令行选项。

make也可以选择使用其他实用程序。

-更新2018-10-19-

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


看着这份名单,目前还不清楚是否有或曾经是一个严格的POSIX只会让-也许这更有意义,而不是开始与make这是旨在用于“其他的Makefile”,在问题中使用。您还说过,根据对某些文档的阅读,GNU的.POSIX目标还不够”,但是您还没有通过实际案例来证明这一点,这有点像XY问题
goldilocks 2014年

@ goldilocks,X代表检查由于缺乏精通GNU-Make的特殊性而要坚持的限制(用于编辑和修改),并帮助我意识到某些特殊性的存在(如果有)。视力检查容易出错,不能机械化,我更喜欢避免容易出错的自制grep / sed / awk过滤器来检查和吸引我的注意力。
Hibou57 2014年

我也不是制作向导,但是直接问一下会更好吗?(如果是这样,堆栈溢出可能是一个更好的选择。)
goldilocks 2014年

你可能是对的。顺便说一句,在我发布之后,我先删除了,然后再次删除了这个问题(不确定位置)。稍后,我可能会按照您的建议重新询问Stack Overflow。感谢你的关心。
Hibou57

Answers:


6

我很确定没有办法禁用GNU make扩展。的.POSIX目标改善了兼容性,但不会禁用兼容扩展诸如函数,专有点目标,%在目标图案等

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


3
在Debian Linux上,我pmake用于测试makefile的可移植性。它声称是NetBSD的调味料。(在较新版本的Debian中是bmake。)
Palec 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.