переменное имя цели в make-файле - PullRequest
0 голосов
/ 09 февраля 2020

насколько хорошо / плохо это иметь «непостоянные» цели в 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_*

Интересно, есть ли другие (лучшие) способы решения этой проблемы.

...