Как написать правило для построения объектного файла, когда файлы C имеют разные пути - PullRequest
1 голос
/ 11 марта 2012

У меня есть куча файлов C, каждый с разным путем, поэтому у меня есть что-то вроде

SRC=/path1/path2/file1.c file2.c /usr/joe/files/file3.c

Я хочу собрать объектный файл из каждого файла C в каталоге сборки, поэтому я сделал:

SRCBASE=$(notdir $(SRC))

OBJS= $(addprefix $(OBJDIR)/,$(SRCBASE:.c=.o))

Это отлично работает, и я получил OBJS build / file1.o build / file2.o build / file3.o

Мой вопрос заключается в том, как написать неявное правило для построения объектафайл, который я пытался сделать:

build/%.o : %.c
gcc ....

Но теперь это похоже на работу, так как это правило не перехватывает файлы с полным путем.Я пытался взглянуть на марку gnu, но не нашел там ответа.

Большое спасибо.

1 Ответ

1 голос
/ 11 марта 2012

Вы можете использовать VPATH для поиска файлов в других каталогах. Обратите внимание, что это делает неявный поиск, а не использует явные пути. То есть вы указываете, что вам нужен file1.o через file3.o и что make должен выглядеть сначала в ., затем в /path1/path2, затем в /usr/joe/files; так что если . содержит file3.c, вы получите его вместо того, что в /usr/joe/files (или, если нет, но если есть в /path1/path2, вы получите его).

Оказывается, поиск пути в любом случае полезнее, чем явное местоположение, поэтому обычно это то, что вам нужно. Если вам нужно что-то переопределить, просто скопируйте или вставьте символическую ссылку на «желаемую версию» на первое место для поиска.

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