NAME=main
$(NAME).exe : $(NAME).obj
$(NAME).obj : $(NAME).cpp
要点:
- exe在前,obj在后。因为nmake判断$(NAME).obj,如果不是最新的,就更新obj,然后创建exe。这里,分号前叫做“target”,分号后叫做“dependent”。
- 这还不是最简单的,这里使用了宏NAME。对宏的引用是$(),如果宏是单个字符,也可以不加()。
NAME=main
$(NAME).exe : $(NAME).obj
@echo "link exe is ok"
$(NAME).obj : $(NAME).cpp
- 添加了@echo "link exe is ok",主要解释@的用法:不显示自身,所以显示的是:
link exe is ok
而不是
echo "link exe is ok"
"link exe is ok"
- 如果交换一下$(NAME).obj : $(NAME).cpp和$(NAME).exe : $(NAME).obj的位置,即
$(NAME).obj : $(NAME).cpp
$(NAME).exe : $(NAME).obj
exe将不会被编译,似乎nmake只执行第一行,然后由依赖关系再去执行其他。