C++ Makefile路径包含和src目录makefile

时间:2021-02-20 12:12:33

标签: makefile g++

我正在尝试为我的 C++ 项目创建一个 Makefile,它具有以下结构:

root
├── include/
|   └──external
|       └── stb_image.h
│   └── all .h files here
├── src/
|   └── main.cpp
│   └── all .cpp files here
└── Makefile

为了编译这个项目,我正在尝试使用 this answer 中提出的 Makefile,它是为 gcc 设计的,但我已经添加了 CC:=g++ 所以它应该可以工作(我认为):

SRC_DIR := src
OBJ_DIR := obj
BIN_DIR := bin

EXE := $(BIN_DIR)/color
SRC := $(wildcard $(SRC_DIR)/*.cpp)
OBJ := $(SRC:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.o)

CPPFLAGS := -Iinclude -MMD -MP
CFLAGS   := -g -std=c++2a -Wall
LDFLAGS  := -Llib
LDLIBS   := -lpthread
CC := g++

.PHONY: all clean

all: $(EXE)

$(EXE): $(OBJ) | $(BIN_DIR)
    $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@

$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp | $(OBJ_DIR)
    $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@

$(BIN_DIR) $(OBJ_DIR):
    mkdir -p $@

clean:
    @$(RM) -rv $(BIN_DIR) $(OBJ_DIR)

-include $(OBJ:.o=.d)

但是在运行 make 时,我得到了一个我不明白的很长的错误。我不知道这个 error 是否来自没有 main.cppmain.h

我需要这个 makefile,因为我想将我的项目的声明和实现分开。在此之前,我在头文件中完成了所有工作,并且可以使用以下命令编译我的项目:

g++ -g -std=c++2a -Wall -Isrc/include -o bin/color.exe  src/main.cc -lpthread

知道我做错了什么吗?我仍然对 Makefile 了解不多,所以可能我在做一些奇怪的事情。

0 个答案:

没有答案
相关问题