Makefile - Subst - no reemplaza la variable

Makefile - Subst - no reemplaza la variable

Estoy intentando ejecutar el siguiente substcomando para reemplazar una cadena /var/jenkins_homecon otra /srv/jenkins-slave-1/datapara que el valor HOST_LOG_DIRcambie de /var/jenkins_home/workspace/ts_myapp_testing_integration-testsa /srv/jenkins-slave-1/data/workspace/ts_myapp_testing_integration-tests

pero cuando ejecuto el objetivo del archivo MAKE, substtestel valor de HOST_LOG_FILEpermanece sin cambios (consulte la captura de pantalla).

WORKSPACE               := "/var/jenkins_home/workspace/ts_myapp_testing_integration-tests"
JENKINS_HOME            := "/var/jenkins_home"
JENKINS_HOME_HOST_PATH  := "/srv/jenkins-slave-1/data"
HOST_LOG_DIR            :=  $(subst $(JENKINS_HOME),$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))

.PHONY: substtest, print_env

substtest: print_env

print_env:
    @echo "WORKSPACE is ${WORKSPACE}"
    @echo "JENKINS_HOME is ${JENKINS_HOME}"
    @echo "JENKINS_HOME_HOST_PATH is ${JENKINS_HOME_HOST_PATH}"
    @echo "HOST_LOG_DIR is ${HOST_LOG_DIR}"][1]][1]

ingrese la descripción de la imagen aquí

Lo extraño es cuando lo reemplazo $(JENKINS_HOME)con el valor de ruta real /var/jenkins_home, es decir

HOST_LOG_DIR := $(subst /var/jenkins_home,$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))

entonces funciona como se esperaba,

ingrese la descripción de la imagen aquí

Necesito arreglar esto para que funcione sin la sustitución codificada.

Respuesta1

JENKINS_HOME            := "/var/jenkins_home"

Deberíanocite los valores de las variables en Makefiles. Esto no es un shell, las comillas no son especiales de ninguna manera y no se eliminan.

WORKSPACE               := /var/jenkins_home/workspace/ts_myapp_testing_integration-tests
JENKINS_HOME            := /var/jenkins_home
JENKINS_HOME_HOST_PATH  := /srv/jenkins-slave-1/data
HOST_LOG_DIR            :=  $(subst $(JENKINS_HOME),$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))

información relacionada