gnu make,microsoft nmake和posix标准有多相似/不同?

时间:2010-02-17 03:37:43

标签: makefile portability nmake gnu-make

gnu make,microsoft nmake和posix standard make有多相似/不同?

显然有类似“哪个操作系统?”,“哪个编译器?”和“哪个链接器?”,但我具体指的是makefile本身的语法,语义和命令行选项。

如果我根据gnu make的手册编写makefile,那么我需要注意哪些最重要的可移植性问题?

1 个答案:

答案 0 :(得分:10)

GNU Make和POSIX使共享成为一个共同的核心,以便GNU Make能够理解用于POSIX Make的makefile并以相同的方式解释它们 - 除了极少数例外。但是,许多GNU Makefile使用仅在GNU Make中可用的功能。有时这是故意的和有意识的;有时它不是(并且“有时不是”是一个问题)。我不熟悉微软的nmake;我相信它的核心可能接近POSIX Make语义,但它会有自己不同的扩展集。

一般来说,autoconf产生的程序与便携式Makefile类似。

使用GNU Make时要注意的主要事项是将文件名(宏)映射为有用值的所有扩展函数符号。虽然它们无疑是有用的,但它们也是便携性的陷阱。

后缀规则的'%。x'符号未由POSIX定义 - 它们被识别为常用扩展名:

  

包含字符'%''"'的目标的解释是实现定义的。