c++ - Makefile 中的编译错误,包括未显示

标签 c++ gcc makefile g++ compilation

我有一个 makefile 如下:

CC = gcc
CFLAGS = -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" $(INCLUDES)
ifdef DEBUG
CFLAGS += -g3
endif

INCLUDES = \
-I../config.include \
-I../log.include \
-I../services.include

SRC_DIR = src
BIN_DIR = bin
BINARY  = report

SRCS = $(shell ls $(SRC_DIR)/*.cpp)
OBJS = $(SRCS:%.cpp=%.o)

all: $(OBJS)
    @mkdir -p $(BIN_DIR)
    $(CC) $(OBJS) -o $(BIN_DIR)/$(BINARY)

clean:
    rm -rf $(BIN_DIR) $(OBJS)

但是,当我运行 make 时,出现错误:

g++     -c -o src/report.o src/report.cpp
src/report.cpp:40:20: error: log.h: No such file or directory
src/report.cpp:41:28: error: services.h: No such file or directory
src/report.cpp:41:28: error: config.h: No such file or directory

我知道头文件在那里,而且它们被正确地包含在内。路径也是正确的。 makefile 有问题,但我不知道是什么。

请注意,即使我设置了 CC = gcc,输出始终是 g++。这不是打字错误,它实际上是我得到的输出 - 同样,我不确定为什么。

帮助!

最佳答案

对于 .cpp 文件,您必须重新定义 CXXFLAGSCXX 而不是 CFLAGSCC

检查 make -p 的输出并搜索 %.o: %.cpp 规则。

关于c++ - Makefile 中的编译错误,包括未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3935648/

相关文章:

c++ - GNU make - $(MAKEFILES) 中的 makefile 中的规则未被读取/确认

linux - 如何编写可以区分 Intel OS X 和 Linux 的 Makefile?

c++ - 在不使用图形的情况下以最小产品从第一个索引到最后一个索引?

c - ld : can't open output file for writing: bin/s, errno=2 架构 x86_64

c - 对 __read_moSTLy、__init、__exit 宏的很好解释

控制 makefile 的输出

c++:我正在尝试颠倒字符串中单词的顺序(不是整个字符串)

c++ - C++ 编译器是为所有成员方法生成 "this"指针,还是只为引用成员的方法生成指针?

c++ - 如何在MSDN Windows中获取HMONITOR信息?

c - 为什么 gcc 中 '-l' 选项的顺序很重要?