0

我正在为一个 FPGA 团队开发一个 makefile 环境,我目前遇到了宏问题。我已经为 TOOL_EXEC 变量定义了它,但是我收到了与双引号和括号相关的“意外令牌”错误。如果我放双双引号,则变量膨胀时根本没有任何引号并且不会产生错误,但是我们的工具要求它们放在括号中。我需要传递完全引用的括号信息,但宏定义给我带来了问题!

“意外标记 `(' 附近的语法错误”

    Example call to tool: (This works fine)
    $ Tool --v v4.5 -odir . -verilog -vh "('name', 'propname', 'address', 'desc')" filename.rdl

    Desired Macro/variable: (not working)
    TOOL_EXEC = -odir . -verilog -vh "('name', 'propname', 'address', 'desc')"

有任何想法吗?谢谢

4

2 回答 2

1

在 makefile 中设置变量时,您只使用变量的名称,不使用美元符号,如下所示:

TOOL_EXEC = -odir . -verilog -vh "('name', 'propname', 'address', 'desc')"

如果你写${TOOL_EXEC}那么它将被扩展并且扩展的结果将被用作变量名。如果未设置,则将解析为:

 = -odir . -verilog -vh "('name', 'propname', 'address', 'desc')"

这显然是不对的。

于 2013-07-06T01:22:06.780 回答
1

只需使用反斜杠转义每个特殊字符(例如引号、双引号或括号):

TOOL_EXEC = -odir . -verilog -vh \"\(\'name\', \'propname\', \'address\', \'desc\'\)\"
于 2013-07-06T02:02:25.253 回答