насколько хорошо / плохо это иметь «непостоянные» цели в make-файле?
Компания, в которой я работаю, производит встраиваемое оборудование, и я - инженер по прошивке.
правила кодирования компании, для которой я работаю, требуют, чтобы файлы, создаваемые сборкой, имели имя, помеченное версией, а также информацию sh из репозитория git (для нужд отдела тестирования и производственного отдела). Дополнительным ограничением является то, что сборка производится с помощью одной команды.
Вот почему я сталкиваюсь с make-файлами каждый день, чьи цели имеют имена, которые могут меняться от сборки к сборке.
Интересно если это общие проблемы или нет.
Интересно, является ли пример, который я написал, хорошей практикой для его решения:
# This is just an example to (hopefully) help to understand.
define populate_variable_with_remote_file_content
$(if $(findstring $(origin $(1)),undefined), \
$(eval $(1) = $(shell git archive master --remote=git@gitserver:project.git $(2) | tar -x --to-stdout)) \
)
endef
.PHONY: clean populate_TAG
all: populate_TAG
$(eval TARGET = dummy_$(TAG))
$(eval export TAG TARGET)
$(MAKE) -f $(firstword $(MAKEFILE_LIST)) $(TARGET)
$(TARGET):
echo hallo > $@
populate_TAG:
$(eval $(call populate_variable_with_remote_file_content,TAG,somefile))
clean:
rm dummy_*
Интересно, есть ли другие (лучшие) способы решения этой проблемы.