【发布时间】:2016-06-17 23:08:43
【问题描述】:
我正在尝试制作一个 Makefile,即使很难,我也可以制作一个简单的 Makefile,当我需要对不同文件夹中的文件进行排序时,我无法让它工作,我需要的是 /translator 文件夹:Makefile, src 文件夹包含所有 .c 和 .h 文件,files 文件夹包含要翻译的文件,bin 文件夹包含所有 .o 文件和可执行文件。
这是我制作的makefile:
CC = gcc
CFLAGS = -Wall -Werror -Wextra -pedantic -std=c99 -g
OBJECTS = word.o pair.o list.o dict.o set.o
translate : $(OBJECTS)
mkdir ./files
mkdir ./bin
cd ./src; $(CC) $(CFLAGS) -o translate $(OBJECTS) main.c; mv *.o ../bin; mv translate ../bin
word.o: word.c word.h
cd ./src; $(CC) $(CFLAGS) -c word.c -o word.o
pair.o: pair.c pair.h word.h
cd ./src; $(CC) $(CFLAGS) -c pair.c -o pair.o
list.o: list.c list.h word.h pair.h
cd ./src; $(CC) $(CFLAGS) -c list.c -o list.o
dict.o: dict.c dict.h word.h list.h
cd ./src; $(CC) $(CFLAGS) -c dict.c -o dict.o
set.o: set.c set.h word.h list.h
cd ./src; $(CC) $(CFLAGS) -c set.c -o set.o
.PHONY : clean
clean :
$(RM) ./bin/*.*
rmdir ./bin
但只要我输入make,终端就会显示:
make: *** No rule to make target `word.c', needed by `word.o'. Stop.
我之前以这种方式为 Java 制作了一个 Makefile,它确实有效,并且在 src 文件夹中肯定有一个文件 word.h 和 word.c,那为什么找不到呢?
【问题讨论】:
-
我是用 Java 做的,现在我读到正确的方法是 && 这样你就知道 cd 命令是成功的
-
即使删除 cd ./src 后仍然找不到要制作 word.o 的目标文件,我假设我站在错误的文件夹中,但它应该如何?