TESTS=test/hello.c
try:
@for t in $(TESTS); do echo $(basename $$t); done
运行“make”我得到了
~ make
test/hello.c
这很奇怪,因为我希望得到基本名称“hello.c”。任何解释?谢谢。
答案 0 :(得分:2)
问题是您尝试在shell for
循环中使用Make指令$(basename ...)
。 Make将首先扩展$(basename $$t)
语句(因此$t
变为for t in test/hello.c; do echo $t; done
),然后传递命令
test/hello
到shell。
这将给@for t in $(basename $(TESTS)); do echo $$t; done
:
hello.c
这将给@for t in $(notdir $(TESTS)); do echo $$t; done
:
Document