GNU使变量“意外令牌”

时间:2013-07-06 00:07:54

标签: makefile gnu-make

我正在为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')"

任何想法? 感谢

2 个答案:

答案 0 :(得分:1)

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

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

如果您编写${TOOL_EXEC},那么它将被展开,扩展的结果将用作变量名称。如果没有设置,那么它将解析为:

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

这显然是不对的。

答案 1 :(得分:1)

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

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