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