Makefile包含不同目录中的文件

时间:2017-02-17 01:41:07

标签: c makefile

我是新手在Ubuntu中使用gcc,所以我正在尝试创建一个Makefile。我的项目文件夹在此文件夹中称为“项目”我还有三个文件夹:源,标题,对象(空)。

我的Makefile应该能够在“对象”文件夹中创建目标文件。但是,我希望我的可执行文件和Makefile在主文件夹中:“project”然后我可以清理可执行文件和目标文件。 如何编译包含这些文件夹的程序?这是我的Makefile作为示例。文件夹“project”位于我的主文件夹中。

 CFLAGS= -ansi -pedantic -Wall -c
all:    project

project: ./objects/main.o ./objects/factorial.o ./objects/gcd.o ./objects/greatestNumber.o ./objects/primeNumbers.o
    gcc -o project ./objects/main.o ./objects/factorial.o ./objects/gcd.o ./objects/greatestNumber.o ./objects/primeNumbers.o

main.o: ./sources/main.c
    gcc $(CFLAGS) ./sources/main.c

factorial.o: ./sources/factorial.c ./headers/factorial.h
    gcc $(CFLAGS) ./sources/factorial.c

gcd.o: ./sources/gcd.c ./headers/gcd.h
    gcc $(CFLAGS) ./sources/gcd.c

greatestNumber.o: ./sources/greatestNumber.c ./headers/greatestNumber.h
    gcc $(CFLAGS) ./sources/greatestNumber.c

primeNumbers.o: ./sources/primeNumbers.c ./headers/primeNumbers.h
    gcc $(CFLAGS) ./sources/primeNumbers.c

clean:
    rm -f ./objects/main.o ./objects/factorial.o ./objects/gcd.o ./objects/greatestNumber.o ./objects/primeNumbers.o project

由于

1 个答案:

答案 0 :(得分:7)

您应该像对待所有其他文件名一样给出目标目标的路径。

./objects/main.o: ./sources/main.c
    gcc $(CFLAGS) ./sources/main.c

......等等。