在makefile中列出.cpp或.o

时间:2016-05-11 13:00:14

标签: c++ makefile

我在目前的代码库中看到了makefile中的两种模式:

  1. 列出所有cpp文件
  2. 列出所有cpp文件,但扩展名已更改为.o
  3. 示例:

    ex1.mk

    ...
    SRCS=src1.cpp src2.cpp ...
    ...
    

    ex2.mk

    ...
    OBJS=src1.o src2.o ...
    ...
    

    从我对makefile的新手理解来看,这两种方法似乎是可以互换的,其中任何一种都足够了。查看有关makefile的教程,我可以在同一个文件中看到它们,有时像:

    OBJS = $(SRCS:.cpp=.o)
    

    SRCSOBJS之间有什么区别?我是否需要同时定义SRCSOBJS?如果是,为什么仅通过定义SRCSOBJS来实现效果?如果不是,我如何选择定义SRCSOBJS

1 个答案:

答案 0 :(得分:2)

如果您定义SRCS,则OBJS = $(SRCS:.cpp=.o)规则会通过替换后缀来定义OBJS

如果您定义OBJS,那么Make知道可以通过编译.o文件来创建.cpp文件。

无论哪种方式都可以。在给定项目中合并和使用一种风格会很好。