реализовать подкаталог в makefile - PullRequest
0 голосов
/ 10 декабря 2018
WARNFLAGS = -W -Wall -Werror
OPTFLAGS = -O3
CFLAGS += $(WARNFLAGS) $(OPTFLAGS)
CC = gcc
DOBJS = /Desktop/Sysprog/Uebungsblatt6/a4/awesome2/awesome.h /Desktop/Sysprog/Uebungsblatt6/a4/awesome3/awesome.h
#MODULES = awesome2 awesome3
$(OBJS): /Desktop/Sysprog/Uebungsblatt6/a4/awesome2/awesome.h /Desktop/Sysprog/Uebungsblatt6/a4/awesome3/awesome.h


awesome: 
$(CC) $(CFLAGS) awesome.c -o $@


clean:
rm -f *~ *.o awesome

Я перепробовал все, но не знаю, как включить заголовочный файл из подкаталога в make-файл.

Мой awesome.c находится в каталоге a4, awesome.h находится вкаталог awesome2 и awesome3, и я хочу скомпилировать awesome.c, но если я скомпилирую, он не найдет awesome.h.Как я могу заставить это работать.

1 Ответ

0 голосов
/ 10 декабря 2018

Вам необходимо включить файл .h в ваш файл .c.

Существует две формы директивы include, которую вы можете поместить в исходный файл C:

#include "path/filename.h"

ThisВерсия, с файлом, который должен быть включен в кавычки, включает в себя файл относительно каталога .c файла.Конечно, вы можете указать абсолютный путь, но это не рекомендуется, так как вы должны адаптировать его всякий раз, когда вы перемещаете файл с кодом / .h на другой компьютер или в другое место.

#include <path/filename.h>

С файлом вinclude между <и>, файл будет найден относительно пути включения, который вы указываете компилятору.В вашем случае:

INC= /Desktop/Sysprog/Uebungsblatt6/a4/

$(CC) $(CFLAGS) awesome.c -o -I$(INC) $@

Ключ -I используется многими компиляторами для предоставления ему стандартного пути включения.Это может отличаться для вашего компилятора (и гуру может обеспечить некоторую корректировку, так как мой Make ржавый).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...