I want to write makefile to compile my C++ codes.
The tree of my files is this:
.
├── include
│ └── Sort.h
├── lib
│ └── Sort.cpp
└── src ├── main.cpp ├── makefile └── objAnd this is my 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 But I give this error after run make in terminal:
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 1Can you help me to edit my makefile?
01 Answer
Thanks for @steeldriver comment.
This is the right 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