首页 > 解决方案 > 字符串中的变量名不计算

问题描述

我正在写一个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)

标签: makefilegnu-make

解决方案


两次使用变量替换,不要忘记(或到处.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)

推荐阅读