我的代码为
echo -e "\\n" "===== Making: $(@D)\n";\
if [ ! -d $(@D) ]; then \
mkdir $(@D); \
else \
if [ -e $(@D)\PackageBuild.error ]; then \
rm $(@D)\PackageBuild.error;\
fi; \
我不确定@D正在做什么。 有人可以帮助我吗
答案 0 :(得分:6)
通常$(command)
执行命令并用命令输出替换$(command)
。
因此必须有一个名为@D的文件,它可执行并位于搜索路径中。
但如果这不是shell脚本而是make文件,则意味着:
$(@D)
目标文件名的目录部分,带尾部 斜线删除。如果
$@
的值为dir/foo.o
,那么$(@D)
就是dir
.
。如果$@
不包含斜杠,则此值为var reg = /exam+ple/g;
。
答案 1 :(得分:0)
bash
没有像@D
这样的语法概念。我想你在这里有一个特殊的背景,我想再次在Makefile
。 make
是一个特殊程序,它不会逐字执行Makefile
中的脚本。相反,它会预处理脚本。
$(x)
,并将其替换为Makefile
中设置的变量。所以我想在Makefile
中的某个地方你有一个名为@D
的变量设置为特定值。 (并且有一个预定义的,正如D. Mika发现的那样; - )