Override a: = em outro makefile

1

Digamos que eu tenha um makefile chamado Foo e tenha uma variável chamada Bar.

no Foo eu tenho:

Bar := /some/initial/path
Other_var := ${Bar}/more/paths

e depois no meu makefile principal eu uso o Foo

include Path/to/Foo

Mas como posso fazer isso no meu makefile principal? Eu posso definir Bar e ter o meu valor de Bar seja o usado em Foo? Eu tentei usar o eval, mas o := é um desafio real. Um grande objetivo é não mudar a fonte do Foo.

    
por Edgar Aroutiounian 03.03.2016 / 08:15

2 respostas

2

As informações on-line do My GNU make 4.0 informam que, se você usar a palavra-chave override em uma atribuição, normalmente usada para substituir as configurações da linha de comandos var = value , o valor não será alterado por outras atribuições que não usam a palavra-chave override .

Você pode tentar no seu makefile principal:

override Bar := myvalueforbar
include Path/to/Foo
    
por 03.03.2016 / 16:19
2

Se você definir Bar antes de incluir Foo no seu Makefile , a Barra estará disponível em Foo .

Por exemplo Eu tenho o seguinte em cada um dos meus pacotes Makefile para Python (as duas primeiras linhas diferem por Makefile, é claro):

UTILNAME:=yaml
PKGNAME:=ruamel.yaml
VERSION:=$(shell python setup.py --version)

include ~/.config/ruamel_util_new/Makefile.inc

E no Makefile.inc tenho rotinas genéricas que, entre outras coisas, agora como criar um arquivo de distribuição:

DIST:=dist/$(PKGNAME)-$(VERSION).tar.gz
WHL:=dist/$(PKGNAME)-$(VERSION)-py*-any.whl

$(DIST): $(SRC)
        make check
        python setup.py sdist
    
por 03.03.2016 / 08:55

Tags