Как добавить каталог ко всем именам файлов, хранящимся внутри переменной '$ ^' - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь использовать команду ar для создания библиотеки из некоторых .o файлов, и эти .o файлы хранятся в такой переменной:

OBJS    := foo.o bar.o baz.o

и у меня есть правило построения библиотеки, которое выглядит следующим образом:

libfoo.a: $(OBJS)
    $(AR) rcs $(LIBDIR)/$@ $^

, однако это не работает, потому что все эти файлы объектов хранятся в отдельном каталоге bin, и make не может их найти. Очевидно, что что-то вроде этого не работает:

libfoo.a: $(OBJS)
    $(AR) rcs $(LIBDIR)/$@ $(BINDIR)/$^

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

1 Ответ

2 голосов
/ 11 июля 2020

Одна возможность: добавить каталог ко всем obj и либо перезаписать OBJS, либо заменить использование OBJS новым символом:

OBJS := foo.o bar.o baz.o
SUBDIR_OBJS := $(OBJS:%=subdir/%)

show:
    @echo OBJS $(OBJS)
    @echo SUBDIR_OBJS $(SUBDIR_OBJS)

Для получения дополнительной информации о заменах см. Gnu текстовые функции

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