В моем проекте у меня есть набор подкаталогов, содержащих файлы package.yaml
, например:
A/package.yaml
B/package.yaml
C/package.yaml
Если я запустил hpack A/package.yaml
, файл A/A.cabal
будет (повторно ) сгенерировано. Список таких каталогов может меняться со временем, поэтому я хочу использовать GNU make, чтобы найти все непосредственные подкаталоги, содержащие файлы package.yaml
, и сгенерировать соответствующие файлы .cabal
с помощью hpack.
Я пробовал это на основе на другой вопрос , но он не сработал:
HPACK_FILES := $(wildcard */package.yaml)
PKG_DIRS := $(subst /,,$(dir $(HPACK_FILES)))
CABAL_FILES := $(addsuffix .cabal,$(join $(dir $(HPACK_FILES)),$(PKG_DIRS)))
test:
@echo $(CABAL_FILES)
update-cabal: $(CABAL_FILES)
%.cabal: package.yaml
hpack $<
Однако make update-cabal
говорит, что ничего не поделаешь. make test
однако выводит правильные файлы Кабала. Как я могу это исправить?
Ура!