[英]How can I avoid circular dependency in my Makefile compiling obj file with g++ and gcc?
我试图为使用 c++ 和 c 的项目创建一个 makefile。 我需要编译这些文件才能制作 de .o 文件,但是当我使用 make 编译时,我会删除循环依赖项。
我不知道为什么会发生此错误,因为我试图将来自 .c 的 .o 文件的构建和来自 .cpp 文件的 .o 文件分开。
这是我的生成文件:
SRC = $(wildcard *.c)
SRC++ = $(wildcard *.cpp)
OBJ = $(SRC++:.cpp=.o) $(SRC:.c=.o)
DEP = $(SRC:.c=.d) $(SRC++:.cpp=.d)
CC=gcc
CXX=g++
CFLAGS = -Wall
CXXFLAGS = -Wall
all: $(OBJ)
%.c : %.o
$(CC) -c $(CFLAGS) $< -o $@
%.cpp : %.o
$(CXX) -c $(CXXFLAGS) $< -o $@
# Clean the project
clean:
@rm -f $(OBJ) $(DEP)
-include $(DEP)
你知道我做错了什么吗?
您编写的规则是%.cpp : %.o
和%.c : %.o
。 您以错误的方式编写了这些规则。 正在构建的目标必须在冒号的左边,它所依赖的东西必须在冒号的右边。
错误消息告诉您有关循环依赖的信息,因为 GNU Make 定义了一个隐式规则,其中在正确方向上定义了依赖关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.