在 Windows 上的 nmake 中搜索一种更好的安排依赖项和目标文件的方法
Posted
技术标签:
【中文标题】在 Windows 上的 nmake 中搜索一种更好的安排依赖项和目标文件的方法【英文标题】:Searching a better way of arranging dependencies and object files in nmake on windows 【发布时间】:2015-05-28 12:13:55 【问题描述】:我们在 windows 上使用 nmake 来构建我们的 c 应用程序。
到目前为止,我们有以下设置:
app1_build: module1.obj module2.obj module3.obj ...
cl app1.c module1.obj module2.obj module3.obj ...
多年来,这两行代码越来越多(可能有 40 个或更多目标文件),现在很难理解。
有没有办法以另一种方式(可能是垂直)排列/构造它,以便以更优化的方式布局。
提前非常感谢
【问题讨论】:
【参考方案1】:如果可以,您应该考虑使用 GNU make 而不是 Microsoft NMAKE。 GNU make 是事实上的标准 make 实现,可在包括 Windows 在内的许多平台上广泛使用,并具有许多简化 makefile 创作的功能。相比之下,NMAKE 就束手无策了。
如果您必须使用 NMAKE,您可以做的最好的事情是将先决条件拆分为多个依赖项规范。例如,而不是
app1_build: module1.obj module2.obj module3.obj
你可以用这个:
app1_build: module1.obj
app1_build: module2.obj
app1_build: module3.obj
这两种形式与 NMAKE 相同,因为它汇总了所有此类规范中的所有先决条件,以确定 app1_build
的先决条件的完整列表。
然后,您可以在命令中使用特殊的$**
变量,因此您无需复制先决条件列表。也就是说,而不是这个:
cl app1.c module1.obj module2.obj module3.obj ...
你可以用这个:
cl app1.c $**
NMAKE 将用正在构建的目标的所有先决条件的完整列表替换 $**
。
【讨论】:
以上是关于在 Windows 上的 nmake 中搜索一种更好的安排依赖项和目标文件的方法的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Windows 上运行 nmake,链接在正文中给出