나는 커맨드 라인 매개 변수를 취하고 거기에 번역본 (tr
)을 실행 한 다음, 그 변수를 사용하여 디렉토리를 만들고 그 결과를 인쇄하는 Makefile 작업을하고있다. 변수를 인쇄 할 때 예상대로 (변환 된 이름), 변수를 사용하여 디렉터리를 만들 때 결과가 올바르지 않습니다. 그래서 예를 들어tr을 사용한 후에 왜 Makefile 변수가 변하지 않습니까?
, 나는 실행하면
Building...
***************************
BuilD Type: Debug
Build Target: x86
그러나 결과 파일 시스템은 다음과 같습니다 :
make build=debug
내가 볼
out/
└─── debug | tr d D_x86
내가 가 실행하는 생각 입력 변수 build
에 translation을 입력하고 $BUILD_TYPE
에 서명하면이 새로운 변수가 "Debug"
으로 설정되었을 것입니다. 그러나 항상 그런 것은 아닙니다. 실제로 어떻게 작동합니까?
전체 메이크 :
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)
AH ... 확인. 그래서 출력이 올바른 이유는'@ echo'가 실행 중일 때 쉘 명령을'$ BUILD_TYPE' (즉'tr')에서 실행했기 때문입니다. – Mike
@Mike Correct, 나는 그것을 설명하기 위해 편집했다. –
감사합니다. 쉘 명령어로'$ BUILD_TYPE' 할당을 업데이트하면 BuilD 유형 "'에서 출력 디렉토리 이름과 대문자 'D'를 모두 확인할 수 있습니다. 그 잘못된 인쇄를 놓쳤습니다. – Mike