抱歉问了个愚蠢的问题。这个“make”是在工作中使用的,但他们不能告诉我它到底是什么版本。我在哪里可以获得它的文档? 这是代码示例:
type = "rnd" #Default test. It's also possible to run "snr" test.
TEST = \
-L demoduli \
-L ${DEF_LIB} \
-sv_seed ${CONFIG_SV_SEED} \
${DEF_LIB}.tb_qi_qu_qa \
+UVM_VERBOSITY=UVM_NONE \
+UVM_TESTNAME=tb_qi_qu_qa_${type}_test \
-do "waves/wave.do" \
-do "run -all" \
-do "quit"
base_run_sim:
vsim -64 -c -voptargs="+acc" \
${TEST}
例如,我想在这段代码中添加 if-else 语句。此代码不起作用:
type = "rnd" #Default test. It's also possible to run "snr" test.
if [ ${type} = "rnd" ]; then echo "yeee"; fi
TEST = \
-L demoduli \
-L ${DEF_LIB} \
-sv_seed ${CONFIG_SV_SEED} \
${DEF_LIB}.tb_qi_qu_qa \
+UVM_VERBOSITY=UVM_NONE \
+UVM_TESTNAME=tb_qi_qu_qa_${type}_test \
-do "waves/wave.do" \
-do "run -all" \
-do "quit"
base_run_sim:
vsim -64 -c -voptargs="+acc" \
${TEST}
我收到这条消息: “make/direct.mk:3: *** 缺少分隔符。停止。”
我的版本: GNU Make 4.1 专为 x86_64-pc-linux-gnu 构建
您可以通过运行
make --version
或 make --help
来了解您通常使用的 make 版本,或者询问您的系统哪个软件包提供了 make
程序。由于您没有向我们提供有关您的操作系统或其他任何信息的任何详细信息,因此我们无话可说。您发布的 makefile 似乎非常简单,符合 POSIX make
,因此这可能是许多不同的 make
实现。
但是,你的问题根本不成立。这是因为你的 shell 脚本是无效的 shell 语法。如果您向我们提供了 (a) 您实际做了什么更改(您说您添加了该行,但您没有显示 where 您添加了它)以及 (b) 当您尝试运行
make
时遇到了什么错误,这将是非常明显的。
在 shell 中,
[
是一个实际的测试程序,因此您必须确保它与参数之间用空格分隔。就像您不能对文件 lsfoo
说 ls
一样,您也不能说 foo
。此外,您在 [${type}
之前缺少一个分号。
如果您向我们展示了 make 打印的命令行,然后您在 shell 提示符处复制并粘贴了同一行,您会发现在不涉及 make 的情况下您会得到相同的错误。你想要:
fi