Makefile具有多个主要功能

时间:2017-09-11 04:31:30

标签: c makefile compiler-errors

all: program1 program2

program1: StringListDemo.o
    gcc -Wall -std=c11 -Iinclude src/StringListDemo.c src/LinkedListAPI.c -o program1

program2: StructListDemo.o
    gcc -Wall -std=c11 -Iinclude src/StructListDemo.c src/LinkedListAPI.c -o program2

尝试使用包含主要功能的两个文件编译文件夹,但不断收到错误。

make: *** No rule to make target `StringListDemo.o', needed by `program1'.  Stop.

1 个答案:

答案 0 :(得分:1)

由于您提及StringListDemo.o,但没有给出规则,make会查找告知如何更新它的implicit rule。换句话说,make查找当前目录中显然不存在的StringListDemo.c文件。但是,您还提到src/StringListDemo.c,而program1目标显然取决于它。因此,您应该将先决条件列表中的StringListDemo.o更改为src/StringListDemo.o

program1: src/StringListDemo.o

同样的逻辑适用于program2

如果src/StringListDemo.c应该使用特殊选项(与默认值不同)进行编译,则明确添加StringListDemo.o目标,例如:

StringListDemo.o: src/StringListDemo.c
    gcc ...