Я хочу прочитать часть строки (некоторый номер версии) из файла version
. Эта функциональность добавлена в функцию make-файла. Перед этим я обновляю файл с новым номером версии. Но когда я пытаюсь присвоить эту новую версию некоторой переменной, она читает старый номер версии.
Просто чтобы убедиться, я добавил команду cat verison
для проверки содержимого файла.
Ниже приведено содержимое файлов, которые я написал.
файл: версия
me@linux:temp$ cat version
PROC_V7.1.2.3
файл: Makefile
me@linux:temp$ cat Makefile
include $(shell pwd)/$(wildcard *.mk)
.PHONY: firmware
firmware:
$(call version_replace, 100)
файл: image.mk
me@linux:temp$ cat image.mk
define version_replace
cat version
sed -i 's/V7/V177/g' version
cat version
$(eval NEW_VER:=$(shell cat version | cut -d '_' -f 2 ))
echo $(NEW_VER)
endef
Поэтому, когда я сделал make firmware
, новая переменная дает старое значение V7.1.2.3
вместо V177.1.2.3
.
me@linux:temp$ make firmware
cat version
PROC_V7.1.2.3
sed -i 's/V7/V177/g' version
cat version
PROC_V177.1.2.3
NEW_VER=V7.1.2.3
echo V7.1.2.3
V7.1.2.3
Насколько я понимаю, все назначения, выполняемые первыми, и NEW_VER
уже заполнены старым номером версии при вызове функции version_replace
.
Так как мне прочитать обновленный номер версии из файла в функции make file?