Как я могу создать переменную "на лету" из make файла, значением которой будет все содержимое другого файла данных.
Создайте переменную в make файле, прочитав содержимое другого файла
Ответ 1
Я предполагаю, что вам нравится устанавливать переменную в Makefile в содержимое другого файла:
FILE=test.txt
VARIABLE=`cat $(FILE)`
target:
echo $(VARIABLE)
Ответ 2
Предполагая, что GNU делает:
file := whatever.txt
variable := $(shell cat ${file})
Ответ 3
cat
не существует в Windows. Решение, которое работает для Linux и Windows:
cat := $(if $(filter $(OS),Windows_NT),type,cat)
variable := $(shell $(cat) filename)
Объяснение:
Похоже, что в Windows всегда есть переменная среды OS
, которая определяется как "Windows_NT". Таким образом, для Windows type
используется команда, для не-Windows cat
.
Ответ 4
Поскольку платформа не указана, это способ работы с Solaris:
VERSION:sh = cat VERSION
all:
echo $(VERSION)
Ответ 5
GNU make version 4.2 поддерживает операцию чтения файлов, поэтому по отношению к Максиму Егорушкину отличный ответ - есть дополнительный способ решить эту проблему сейчас:
file:=test.txt
variable:=$(file < $(FILE))