После этого урока:путь включает и ЦСИ каталог Makefile
http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
Он имеет 3 файлы 2 из которых являются .c
файлами и 1 .h
файла. Учебник посвящен настройке make-файлов, и первые несколько шагов работают. Последний шаг включает настройку путей каталога для файлов .h
и .c
. Я поместил файлы .c
в файл src и файлы .h
в файл include.
Похоже, что это /home/bob/testcode/src
< - содержит файлы .c
.
И /home/bob/testcode/include
< - содержит файлы .h
.
Код:
IDIR =../include
CC=gcc
CFLAGS=-I$(IDIR)
ODIR=obj
LDIR =../lib
_DEPS = hellomake.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = hellomake.o hellofunc.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o [email protected] $< $(CFLAGS)
hellomake: $(OBJ)
gcc -o [email protected] $^ $(CFLAGS)
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~
Я хочу, чтобы понять, как это работает, и затем использовать его в библиотеке, которые я работаю. Может ли кто-нибудь указать мне, как настроить этот код? Я пробовал множество опций: "/home/bob/testcode/include/"
с w/o "
и /
, и я до сих пор не работаю.
Цель состоит в том, чтобы получить работу с библиотекой, которая содержит более 60 файлов заголовков и 30 исходных файлов, из этих файлов мне нужно будет запустить 1 главный, поэтому мне действительно нужно заставить эту основную работу makefile работать, чтобы я мог расширить Это.
Общая задача эти линии Wich остаются открытыми:
IDIR =../include
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
и
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
За что я перепробовала множество различных заменителей пути но я об ошибке генерировать говорит:
gcc -o hellomake -I../include
gcc: fatal error: no input files
compilation terminated.
make: *** [hellomake] Error 4
Пожалуйста, помогите, спасибо заранее.
Добро пожаловать в StackOverflow! Пожалуйста, используйте реальные слова с реальным значением о вашей реальной проблеме, а не о вещах типа «*, чтобы заставить его работать». Также, пожалуйста, напишите, что вы пробовали здесь. – Eregrith
Надеюсь, теперь ясно, что это просто проблема синтаксиса, который, как мне кажется, «pathsubst» нуждается в правильном пути, который я предоставил, но я все еще получаю фатальную ошибку. – iBeyondPower
Ваша ошибка довольно ясна. Вы не передали файл gcc, чтобы связать их с 'hellomake' – Eregrith