Makefile MinGW/GNU Make-“;“多目标模式”;
我在WindowsXPSP2下使用Mingw3.18,GNUMake3.82 我试图将脚本返回的值合并到路径中,并收到一个错误 这项工作:Makefile MinGW/GNU Make-“;“多目标模式”;,makefile,mingw,Makefile,Mingw,我在WindowsXPSP2下使用Mingw3.18,GNUMake3.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_DI
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行是产品目标文件的定义)
我仔细检查了$(version),它在两种情况下的值相同,显然没有前导/尾随空格或换行符:
@echo [$(version)]
[1.1.1]
回击(`)是一种猛击,而不是制造
如果要调用外部shell,应使用以下函数:
version=$(shell get_version.sh)
您有(至少)1359行长的Makefile吗?这让我想哭!您确定它设置为相同的值吗?例如,如果它找不到该命令,则会将其设置为
/bin/sh:get_version.sh:command not found
,其中包含冒号,这将导致确切的问题。反勾号似乎在gnu make中工作,因此即使$(shell)在兼容性方面可能更好,这不应该是问题的原因。@JoachimIsaksson:这取决于你所说的“工作”是什么意思;Make当然不会对它们进行评估。