gnu make、microsoft nmake 和 posix standard make 的相似/不同之处如何?
显然有诸如“哪个操作系统?”,“哪个编译器?”之类的东西。和“哪个链接器?”,但我特别指的是 makefile 本身的语法、语义和命令行选项。
如果我根据 gnu make 的手册编写 makefile,我需要注意的最重要的可移植性问题是什么?
gnu make、microsoft nmake 和 posix standard make 的相似/不同之处如何?
显然有诸如“哪个操作系统?”,“哪个编译器?”之类的东西。和“哪个链接器?”,但我特别指的是 makefile 本身的语法、语义和命令行选项。
如果我根据 gnu make 的手册编写 makefile,我需要注意的最重要的可移植性问题是什么?
GNU Make 和 POSIX Make 共享一个共同的核心,因此 GNU Make 可以理解用于 POSIX Make 的 makefile 并以相同的方式解释它们 - 很少有例外。但是,许多 GNU Makefile 使用仅在 GNU Make 中可用的功能。有时这是故意和有意识的;有时不是(而“有时不是”是个问题)。我对 Microsoft nmake 不太熟悉;我相信它的核心可能会接近 POSIX Make 语义,但它会有自己不同的扩展集。
一般来说,像 autoconf 这样的程序产生的东西接近于可移植的 Makefile。
使用 GNU Make 时要注意的主要事项是将文件名(宏)映射到有用值的所有扩展函数符号。虽然它们无疑是有用的,但它们也是可移植性的陷阱。
后缀规则的 '%.x' 符号不是由POSIX定义的——它们被认为是一个常见的扩展:
包含字符的目标的解释
'%'
是'"'
实现定义的。