我正在尝试用 C 为我的项目编写 Makefile。
我的.c文件在src子
.o文件build夹中,子文件夹中的
.h文件,src/header子文件夹中的文件
和子文件夹.c中的测试tests文件。
在我的 Makefile 中,我使用的是 vpath:
vpath %.c src:tests
vpath %.h src/header
vpath %.o build
Run Code Online (Sandbox Code Playgroud)
当我想编译时file1,Makefilefile1.c在子文件夹中查找并将目标文件编译到子文件夹中没有问题build/file1.o。但是当它把file1编译成可执行文件时,Makefile找不到file1.o
这是我在 Makefile 中针对特定文件的代码:
test_file1: test_file1.o file.o
$(CC) $^ -o tests/$@
test_file1.o: test_file1.c file1.h
$(CC) $(CFLAGS) -c $< -o build/$@
file1.o: file1.c file1.h file2.h file3.h
$(CC) $(CFLAGS) -c $< -o build/$@
Run Code Online (Sandbox Code Playgroud)
从test_file1.o我得到:
gcc -std=c99 -Wall -Wextra …