GNU make将所有.cpp文件编译为.o并包含.h文件

时间:2016-02-01 18:08:36

标签: c++ makefile gnu

所以我的文件夹看起来像这样

OS
  Makefile
  /include
    head.h
  /src
    main.cpp
    head.cpp
  /objects

如何使用Makefile将所有.cpp文件编译到对象文件夹,然后将包含.h的所有.o文件编译到我的实际cpp程序中。我目前有:

CPP_FILES := $(wildcard src/*.cpp)
H_FILES := $(wildcard include/*.h)
OBJ :=$(wildcard objects/*.o)
LIBS := -Wall
CC := -std=c++14

我接下来要输入什么来将所有这些.cpp文件制作成.o并使用.h编译它们。谢谢你的时间

1 个答案:

答案 0 :(得分:2)

您可以使用pattern rules(以前称为"后缀规则")。在使用GNU make时,您可以编写此行来编译.cppsrc/.o个文件中的所有objects/个文件,假设放置了Makefile顶级目录:

objects/%.o: src/%.cpp
    $(CXX) -c $(CFLAGS) $< -o $@

在GNU中,make语法$<表示依赖项(本例中为.cpp文件),$@表示目标(目标文件)。

不需要编译.h个文件,只需将正确的包含路径设置为CFLAGS变量包含的字符串的一部分:

 CFLAGS += -I./include