Я пытаюсь организовать каталог моего проекта следующим образом:
shell
| inc / [заголовочные файлы]
| obj / [объектные файлы]
| src / [исходные файлы]
| Makefile
| Исполняемый файл
Все компилируется без ошибок со всем в корневой папке, но я сталкиваюсь с трудностями при модификации моего make-файла, чтобы все размещалось в разных каталогах.
Вот как выглядел мой make-файл без каталогов
OBJS = shutil.o parser.o sshell.o
HEADER_FILES = shell.h parser.h
EXECUTABLE = sshell
CFLAGS = -Wall
CC = gcc
#Create main executable
$(EXECUTABLE): $(OBJS)
$(CC) -o $(EXECUTABLE) $(OBJS)
#Create object files
%.o: %.c
$(CC) $(CFLAGS) -I. -c -o $@ $<
$(OBJS) : $(HEADER_FILES)
Я попытался добавить каталоги в определения (для каталогов obj / и inc /)
OBJS = obj/shutil.o obj/parser.o obj/sshell.o
И изменил каждый экземпляр% .o и% .c на obj /%. O и src /%. C
Насколько я могу судить, все должно быть хорошо, но я получаю эту ошибку, когда иду всделать из корневого каталога
gcc -Wall -Iinc -c -o obj/shutil.o src/shutil.c
src/shutil.c:8:23: fatal error: inc/shell.h: No such file or directory
compilation terminated.
Может кто-нибудь найти, что я здесь делаю не так?Я боролся с этим в течение нескольких дней.