Генерация списка файлов / объектов динамически из make-файла - PullRequest
1 голос
/ 22 сентября 2011

Я пытаюсь сделать это:

Из каталога, выбрать все C (.c) файлы, сгенерировать .o и добавить его в мой конечный целевой исполняемый файл.Файлы C могут быть добавлены или удалены в любое время, поэтому, когда я запускаю make для своей цели, нужно выбрать доступные C файлы из каталога, чтобы скомпилировать и связать с моей целью.* Пока у меня есть следующее:

define test_tgt = 
DIR = full/path/to/dir
FILES = $(wildcard $(DIR)/*.c)
OBJS = <rule-to-convert-C-to-O>
endef

get_new_files: 
     $(eval $(test_tgt))

final-target: get_new_files 
      $(CC) <other-objs> $(OBJS)

Почему-то это не работает.Я вижу много подобных примеров, но не уверен, что здесь не так.Если этот подход не верен, может кто-нибудь предложить лучший способ сделать это.

TIA.

1 Ответ

4 голосов
/ 23 сентября 2011

Вы пытаетесь запрограммировать проверку, которую make делает самостоятельно. Просто перечислите $(OBJS) как зависимости final-target.

Примерно так должно работать в GNU make:

DIR = full/path/to/dir
FILES = $(wildcard $(DIR)/*.c)
OBJS = $(subst .c,.o,$(FILES))

final-target: $(OBJS)
    $(LD) -o $@ $+  # or similar

Полная документация здесь: https://www.gnu.org/software/make/manual/html_node/Text-Functions.html

...