Я использую MinGW 3.18 под Windows XP SP2, GNU make 3.82.MinGW/GNU Make - «множественные шаблоны целей»
Я пытаюсь включить значение, возвращаемое скриптом в пути, и получить сообщение об ошибке.
Это работает:
PROD_DIR=$(ROOT_DIR)/PROD
version=1.1.1
PROD_SOURCE_files = \
file1 \
file2
PROD_TARGET_files = $(patsubst %,$(PROD_DIR)/$(version)/%,$(PROD_SOURCE_files))
Это не:
PROD_DIR=$(ROOT_DIR)/PROD
version=`get_version.sh`
PROD_SOURCE_files = \
file1 \
file2
PROD_TARGET_files = $(patsubst %,$(PROD_DIR)/$(version)/%,$(PROD_SOURCE_files))
Makefile:1359: *** multiple target patterns. Stop.
(строка 1359 является определение PROD_TARGET_files)
Я дважды проверил $ (версия), он имеет одинаковую ценность в обоих случаях, причем, по-видимому, отсутствуют ведущие/завершающие пробелы или символы новой строки:
@echo [$(version)]
[1.1.1]
У вас есть Makefile, что (по крайней мере) длиной 1359 строк? Это заставляет меня хотеть плакать! –
Уверена, что у него установлено одно значение? Например, если он не может найти команду, он будет установлен в '/ bin/sh: get_version.sh: command not found', который содержит двоеточия и вызовет эту точную проблему. –