我们在Windows上使用nmake来构建我们的c应用程序。
到目前为止,我们有以下设置:
app1_build: module1.obj module2.obj module3.obj ...
cl app1.c module1.obj module2.obj module3.obj ...
这些年来,这两行变得越来越多(可能是40个或更多的目标文件),现在很难理解。
有没有办法以另一种方式(可能是垂直方式)排列/构建它,以便以更优化的方式进行布局。
提前多多感谢
答案 0 :(得分: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会将$**
替换为正在构建的目标的所有先决条件的完整列表。