我是一个新手,使用Ubuntu中的gcc,因此我正在尝试创建一个Makefile。我的项目文件夹名为“project”,在此文件夹中有三个子文件夹:sources、headers、objects(空文件夹)。
我的Makefile应该能够在“objects”文件夹中创建目标文件。但是,我想让我的可执行文件和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
谢谢
main.o
没有依赖于任何头文件吗? - aschepler