GNU/Linux >> Znalost Linux >  >> Linux

Jak lze v makefile použít funkci eval?

Nejjednodušší způsob, jak to pochopit, je nahradit eval info:

$(info $(call func, foo, 1.c))

To zobrazí jako výstup výsledek prvního rozšíření, takže můžete vidět, jaká značka bude ve skutečnosti analyzovat. Nezadali jste hodnoty pro proměnnou OBJPATH, ale pokud to bylo obj například ve vašem případě má první rozšíření (funkce volání) za následek:

tmp = obj/foo
objs += $(tmp)
$(tmp) : 1.c
    gcc $^ -o [email protected]

Pak to analyzátor make vyhodnotí a během procesu to znovu rozšíří, takže věci jako $(tmp) jsou rozšířeny.


Byl to pro mě problém, ale našel jsem pěkné řešení. V mém případě to souviselo s přihlášením AWS docker. Dříve jsem měl ve skriptu shellu:

eval $(aws ecr get-login --region eu-west-1 --no-include-email --profile someprofile)

ale když to vložíte do Makefile nefungovalo to. Řešením je změnit řádek na:

$$(aws ecr get-login --region eu-west-1 --no-include-email --profile someprofile)


Linux
  1. Jak vyměnit vadné zařízení Btrfs

  2. Jak mohu symbolicky propojit soubor v Linuxu?

  3. Jak mohu získat to, co se mi vrátila hlavní funkce?

  1. Jak mohu pozorovat šířku pásma paměti?

  2. Jak mohu upgradovat pip na Ubuntu 10.04?

  3. Jak mohu monitorovat disk io?

  1. Jak mohu seřadit výstup du -h podle velikosti

  2. Jak změnit výchozí /tmp na /home/user/tmp

  3. Jak mohu zastavit ZooKeeper na Ubuntu?