gpt4 book ai didi

makefile - makefile 中的变量(如何使用数组)

转载 作者:行者123 更新时间:2023-12-03 21:24:04 26 4
gpt4 key购买 nike

我在一个 makefile 中有编译器标志,它看起来像:

MYVARIABLE1=HELLO 4.5.6
MYVARIABLE2"="{0x95,0x04,0x05,0x06,' ','A','A'}"
CFLAGS+=-DMYVARIABLE2=${MYVARIABLE2}

这工作正常。但是,如果我想使用 VARIABLE1 中已知的信息来创建 VARIABLE2:
MYVARIABLE1=HELLO 4.5.6
MYVARIABLE2"="{0x95,$(MYVARIABLE1[7]},$(MYVARIABLE1[9]},$(MYVARIABLE1[11]},' ','A','A'}"
CFLAGS+=-DMYVARIABLE2=${MYVARIABLE2}

但是,当我使用第二个选项运行我的 makefile 时,它​​会停止使用 CFLAG 编译 c 文件并显示错误消息:

错误:',' 标记前的预期表达式

在 C 代码中:
 uint8 OTHERVARIABLE[]            =  MYVARIABLE2;

问题:真的 $(MYVARIABLE1[x ]} 是使用 makefile 中定义的变量部分的正确方法吗?

最佳答案

在 make 语法中没有“数组”或列表变量之类的东西。

有一些 GNU make 函数可以对字符串的每个单词进行操作,一次一个,其中一个单词是一个空格分隔的值。这可以被认为是一个数组。这就是为什么 make 几乎不可能处理包含空格的路径的原因。

如果您不使用 GNU make,那么这些都不起作用。

要做你想做的事,你必须拆分 MYVARIABLE1值转换为单独的单词,然后您可以使用函数访问单个单词。像这样的事情会起作用:

MYVARIABLE1 = HELLO 4.5.6
__var1 = $(subst ., ,$(MYVARIABLE1))
MYVARIABLE2 = "{0x95,$(word 2,$(__var1)),$(word 3,$(__var1)),$(word 4,$(__var1)),' ','A','A'}"
subst函数替换了 .带空格,结果为 HELLO 4 5 6以便您可以使用 word 单独引用版本的各个部分功能。

您可以找到有关 GNU make 函数的更多信息 in the documentation .

关于makefile - makefile 中的变量(如何使用数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49983726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com