我想编写 makefile 来编译我的 C++ 代码。
我的文件树是这样的:
.
├── include
│ └── Sort.h
├── lib
│ └── Sort.cpp
└── src
├── main.cpp
├── makefile
└── obj
这是我的 makefile:
cc=g++
CFLAGS= -c -w
.PHONY: all clean
all: main
main: main.o Sort.o
$(cc) main.o Sort.o -o Sort -l m
Sort.o: Sort.cpp ../lib
$(cc) $(CFLAGS) main.cpp
main.o: main.cpp ../include/Sort.h
$(cc) $(CFLAGS) main.cpp
clean:
rm *.o main
make
但是在终端运行后出现此错误:
g++ -c -w main.cpp
main.cpp:1:10: fatal error: Sort.h: No such file or directory
1 | #include <Sort.h>
| ^~~~~~~~
compilation terminated.
make: *** [makefile:16: main.o] Error 1
你能帮我编辑我的 makefile 吗?
答案1
感谢@steeldriver 的评论。
这是正确的 makefile:
cc=g++
CFLAGS= -c -w -I../include
.PHONY: all clean
all: main
main: main.o Sort.o
$(cc) main.o Sort.o -o Sort -l m
Sort.o: ../lib/Sort.cpp ../include/Sort.h
$(cc) $(CFLAGS) ../lib/Sort.cpp
main.o: main.cpp ../include/Sort.h Sort.o
$(cc) $(CFLAGS) main.cpp
clean:
rm *.o main