我对学习Makefile项目的艺术感兴趣。但是,我有一个问题。
背景:
在我的计算机上,我安装了nmake
,我在安装Visual Studio时假设它已经安装。我可能正在考虑让我的C ++项目使用nmake
使用makefile结构。但是,如果我想转向其他流行的make版本呢? gmake
?这引出了我的主要问题:
如果我学会了make
(nmake
,gmake
)的一个实现并转移到另一个实现,我可以预期makefile
语法的差异程度?在惯例/实践中?
如果每个实现之间存在实质性差异,我会有一个后续问题(有点自以为是):
我应该首先学习make
的哪个实现?为什么?
答案 0 :(得分:5)
cmake根本不是make的实现。它是一个完全不同的工具:cmake是创建项目构建控制文件的工具,例如makefile,Visual Studio项目文件,Xcode项目文件,Eclipse项目文件等.Cmake语法没有无论如何要做出语法。
nmake是一种""""制作工具,但它也与其他版本的make不同;大多数其他版本的make(GNU make,Solaris make,BSD make等)至少符合make的POSIX规范。 nmake(据我所知)并没有这样做。但是,用于定义规则的nmake的基本语法与make的其他版本类似。
GNU make是一个高度可移植的make版本,支持POSIX,还有大量非便携式扩展。但是,GNU make本身具有高度可移植性:除了Windows(本机和cygwin)和UNIX(BSD,Linux,Solaris等)系统外,它还支持VMS和其他操作系统。
在上面,nmake是最少便携式选项;它只能在Windows上使用。如果你想使用各种开发工具,cmake是一个不错的选择,但它绝不是像make一样。如果你想学习make和makefiles,并且可以在各种各样的平台上移植,你最好的选择是GNU make。