Passa uma opção para um makefile

3

Makefile

my_test:
ifdef $(toto)
        @echo 'toto is defined'
else
        @echo 'no toto around'
endif

Comportamento esperado

$ make my_test
no toto around

$ make my_test toto
toto is defined

Comportamento atual

$ make my_test
no toto around

$ make my_test toto
no toto around
make: *** No rule to make target 'toto'.  Stop.

Quando executo make my_test , obtenho o texto else como esperado no toto around . No entanto

make my_test toto
no toto around
make: *** No rule to make target 'toto'.  Stop.

Versão do Makefile

 $ make -v
   GNU Make 3.81

versão do SLE

$ cat /etc/*release
  VERSION_ID="11.4"
  PRETTY_NAME="SUSE Linux Enterprise Server 11 SP4"

PS

O ponto é tornar make my_test detalhado se toto , se toto não for dado, então o comando será executado silenciosamente

    
por smarber 01.09.2017 / 11:25

1 resposta

4

Você precisa remover o dólar em torno do toto e também passar o toto da linha de comando de maneira diferente

Linha de comando

make toto=1  my_test

Makefile

my_test:
ifdef toto
        @echo 'toto is defined'
else
        @echo 'no toto around'
endif
    
por 01.09.2017 / 11:44