【发布时间】:2012-03-25 15:42:08
【问题描述】:
我在 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 的定义)
我已经仔细检查了 $(version),它在两种情况下都具有相同的值,显然没有前导/尾随空格或换行符:
@echo [$(version)]
[1.1.1]
【问题讨论】:
-
您有一个(至少)1359 行长的 Makefile?这让我想哭!
-
您确定它设置为相同的值吗?例如,如果它找不到命令,它将被设置为
/bin/sh: get_version.sh: command not found,其中包含冒号,并会导致确切的问题。