MinGW / GNU Make - «несколько шаблонов цели» - PullRequest
2 голосов
/ 25 марта 2012

Я использую MinGW 3.18 под Windows XP SP2, GNU make 3.82.

Я пытаюсь включить в путь значение, возвращаемое сценарием, и получить ошибку.

Это работает:

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]

1 Ответ

3 голосов
/ 25 марта 2012

Backticks (`) - это вещь Bash, а не Make.

Если вы хотите вызвать внешнюю оболочку, вам следует использовать функцию shell:

version=$(shell get_version.sh)
...