【发布时间】:2014-11-11 16:38:28
【问题描述】:
我正在开发一个 Makefile,它采用命令行参数,在其上运行翻译 (tr),然后使用该变量创建目录并打印结果。打印变量时,和我预期的一样(翻译后的名称),但是当变量用于创建目录时,结果不正确。
例如,当我运行时:
make build=debug
我明白了:
Building...
***************************
BuilD Type: Debug
Build Target: x86
但是生成的文件系统是:
out/
└─── debug | tr d D_x86
我认为在输入变量 build 上运行 translation 并将其分配给 $BUILD_TYPE 会将此新变量设置为 "Debug",但似乎这不是一直都是这样……这实际上是如何工作的?
完整的 Makefile:
BUILD_TYPE=Release
BUILD_TARGET=Arm
OUTPUT_DIR=out
MKDIR_P = mkdir -p
ifeq ($(build),debug)
BUILD_TYPE='$(build) | tr d D'
endif
ifeq ($(target),x86)
BUILD_TARGET=$(target)
endif
TT=$(BUILD_TYPE)_$(BUILD_TARGET)
all: directories
@echo 'Building...'
@echo '***************************'
@echo 'Build Type: $(BUILD_TYPE)'
@echo 'Build Target: $(BUILD_TARGET)'
@echo 'Output Directory: $(PWD)/$(OUTPUT_DIR)'
@echo '***************************'
directories:
${MKDIR_P} $(OUTPUT_DIR)
${MKDIR_P} $(OUTPUT_DIR)/$(TT)
【问题讨论】:
标签: linux variables makefile tr