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

GNU make compiling all .cpp files to .o and include .h files

所以我有这样的文件夹

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

我如何使用 Makefile 将所有 .cpp 文件编译到对象文件夹,然后将所有包含 .h 的 .o 文件编译到我当前的实际 cpp program.I:

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

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

您可以使用 pattern rules(以前称为 "suffix rules")。当你使用 GNU make 时,假设 Makefile 被放置在顶层目录:

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

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

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

 CFLAGS += -I./include