【发布时间】:2018-08-27 21:28:06
【问题描述】:
我制作了一个 makefile 来编译一个程序。我不知道它出了什么问题。
CPP = gcc
CXXFLAGS = -I. -std=gnu++2a
DEPS = Robot.h gene_pool.h generate_matrix.h generate_rand_coordinates.h constants.h
OBJS = gene_pool.o generate_matrix.o generate_rand_coordinates.o main.o Robot.o
%.o: %.cpp $(OBJS) $(DEPS)
$(CPP) -c -o $@ $< $(CXXFLAGS)
robot: $(OBJS) $(DEPS)
$(CPP) -o $@ $^ $(CXXFLAGS)
产生的错误信息:
make: Circular gene_pool.o <- gene_pool.o dependency dropped.
make: Circular generate_matrix.o <- gene_pool.o dependency dropped.
make: Circular generate_matrix.o <- generate_matrix.o dependency dropped.
make: Circular generate_rand_coordinates.o <- gene_pool.o dependency dropped.
make: Circular generate_rand_coordinates.o <- generate_matrix.o dependency dropped.
make: Circular generate_rand_coordinates.o <- generate_rand_coordinates.o dependency dropped.
make: Circular main.o <- gene_pool.o dependency dropped.
make: Circular main.o <- generate_matrix.o dependency dropped.
make: Circular main.o <- generate_rand_coordinates.o dependency dropped.
make: Circular main.o <- main.o dependency dropped.
make: Circular Robot.o <- gene_pool.o dependency dropped.
make: Circular Robot.o <- generate_matrix.o dependency dropped.
make: Circular Robot.o <- generate_rand_coordinates.o dependency dropped.
make: Circular Robot.o <- main.o dependency dropped.
make: Circular Robot.o <- Robot.o dependency dropped.
gcc -o robot gene_pool.o generate_matrix.o generate_rand_coordinates.o main.o Robot.o Robot.h gene_pool.h generate_matrix.h generate_rand_coordinates.h constants.h -I. -std=gnu++2a
clang: error: cannot specify -o when generating multiple output files
make: *** [robot] Error 1
我不明白大部分信息。和我的代码有关系吗?
【问题讨论】:
-
你有循环依赖。您的目标文件不应相互依赖。
-
问题。为什么
gcc命令行上有头文件?它们几乎从不打算直接编译。看起来您可能不清楚您的DEPS的用途。 -
@cHao:是的。我不清楚 DEPS 的用途。我认为他们应该在依赖列表中。