MinGW / GNU Make - “多目标模式”

时间:2012-03-25 15:42:09

标签: makefile mingw

我在Windows XP SP2下使用MinGW 3.18,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 个答案:

答案 0 :(得分:3)

Backticks(`)是Bash的东西,而不是Make的东西。

如果要呼叫外部shell,则应使用shell功能:

version=$(shell get_version.sh)