我在目前的代码库中看到了makefile中的两种模式:
.o
示例:
ex1.mk
...
SRCS=src1.cpp src2.cpp ...
...
ex2.mk
...
OBJS=src1.o src2.o ...
...
从我对makefile的新手理解来看,这两种方法似乎是可以互换的,其中任何一种都足够了。查看有关makefile的教程,我可以在同一个文件中看到它们,有时像:
OBJS = $(SRCS:.cpp=.o)
SRCS
和OBJS
之间有什么区别?我是否需要同时定义SRCS
和OBJS
?如果是,为什么仅通过定义SRCS
或OBJS
来实现效果?如果不是,我如何选择定义SRCS
和OBJS
?
答案 0 :(得分:2)
如果您定义SRCS
,则OBJS = $(SRCS:.cpp=.o)
规则会通过替换后缀来定义OBJS
。
如果您定义OBJS
,那么Make知道可以通过编译.o
文件来创建.cpp
文件。
无论哪种方式都可以。在给定项目中合并和使用一种风格会很好。