Makefile - Subst - não substituindo variável

Makefile - Subst - não substituindo variável

Estou tentando executar o seguinte substcomando para substituir uma string /var/jenkins_homepor outra /srv/jenkins-slave-1/datapara que o valor HOST_LOG_DIRmude de /var/jenkins_home/workspace/ts_myapp_testing_integration-testspara /srv/jenkins-slave-1/data/workspace/ts_myapp_testing_integration-tests

mas quando executo o alvo makefile, substtesto valor HOST_LOG_FILEpermanece inalterado (veja a captura de tela).

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]

insira a descrição da imagem aqui

O estranho é quando eu substituo $(JENKINS_HOME)pelo valor real do caminho /var/jenkins_home, ou seja

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

então funciona como esperado,

insira a descrição da imagem aqui

Preciso corrigir isso para que funcione sem a substituição embutida no código.

Responder1

JENKINS_HOME            := "/var/jenkins_home"

Você devenãocite os valores das variáveis ​​em Makefiles. Isto não é shell, as aspas não são especiais de forma alguma e não são removidas.

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))

informação relacionada