我正在为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')"
任何想法? 感谢
答案 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\'\)\"