gnu make,microsoft nmake和posix standard make有多相似/不同?
显然有类似“哪个操作系统?”,“哪个编译器?”和“哪个链接器?”,但我具体指的是makefile本身的语法,语义和命令行选项。
如果我根据gnu make的手册编写makefile,那么我需要注意哪些最重要的可移植性问题?
答案 0 :(得分:10)
GNU Make和POSIX使共享成为一个共同的核心,以便GNU Make能够理解用于POSIX Make的makefile并以相同的方式解释它们 - 除了极少数例外。但是,许多GNU Makefile使用仅在GNU Make中可用的功能。有时这是故意的和有意识的;有时它不是(并且“有时不是”是一个问题)。我不熟悉微软的nmake;我相信它的核心可能接近POSIX Make语义,但它会有自己不同的扩展集。
一般来说,autoconf产生的程序与便携式Makefile类似。
使用GNU Make时要注意的主要事项是将文件名(宏)映射为有用值的所有扩展函数符号。虽然它们无疑是有用的,但它们也是便携性的陷阱。
后缀规则的'%。x'符号未由POSIX定义 - 它们被识别为常用扩展名:
包含字符
'%'
和'"'
的目标的解释是实现定义的。