字符串中的变量名不计算

Variable name in string doesn't evaluate

我正在编写一个 makefile。在我的用例中,变量名称存储在另一个变量中。我正在尝试从函数中评估它,但评估不正确。

在代码中,我希望 "devinit" 的计算结果为 UART_init。我的代码有什么错误?

VAR=MYDEV
MYDEV_init=UART_init


define create_kernels_c
    echo GGGGG $(VAR)
    baseinit=$$(echo $(VAR)_init);
    $$(eval devinit=$$baseinit);
    echo devinit $$devinit;
endef


all:
    @$(call create_kernels_c)

使用变量替换两次并且不要忘记 .ONESHELL:(或在任何地方追加 ;\<CR>):

VAR=MYDEV
MYDEV_init=UART_init


define create_kernels_c
    echo GGGGG $(VAR)
    devinit=$($(VAR)_init)
    echo devinit $$devinit
endef


.ONESHELL:
all:
    @$(call create_kernels_c)