makefile - MinGW/GNU 品牌 - "multiple target patterns"

标签 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的定义)

我已经仔细检查了 $(version),它在两种情况下具有相同的值,显然没有前导/尾随空格或换行符:

@echo [$(version)]
[1.1.1]

最佳答案

反引号 (`) 是 Bash 的东西,而不是 Make 的东西。

如果你想调用外部 shell,你应该使用 shell功能:

version=$(shell get_version.sh)

关于makefile - MinGW/GNU 品牌 - "multiple target patterns",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9861449/

相关文章:

c - NDK - 在 c 文件中使用 .so 文件

linux - 如何将所有 C 文件一次性编译为同一目录中的目标文件?

c - Mlt 框架 - 32 位 Windows 构建无法正常工作

c++ - 使用相对路径 Sublime Text2 命令构建

makefile - 命名 make 文件的约定是否使用大写 'm' ,例如 Makefile?

c - 是否可以使用 'touch' 命令管理间接 .h 依赖项?

c++ - 使用 Cygwin 构建 GLEW 失败

mingw - MSYS2 不提供 .profile

c - Openwrt内核模块

c++ - Windows 10 上的 CMake + MinGW + Clang