%: @echo "$*" # 我有一个makefile文件是这么写的 # 我的调用指令是 # make 编译rc language.qrc # 可是echo出了两行 # “编译rc” # "3" # 怎么能让$*包含整条命令呢 #
时间: 2024-12-04 13:30:11 浏览: 7
在Makefile中,`$*`通常代表命令行中依赖项列表的第一个非选项参数。当你运行`make 编译rc language.qrc`时,`$*`会捕获"编译rc language.qrc"这个字符串。但是,由于这里出现了两次空格,它会被解释为两个独立的参数:"编译rc"和"language.qrc"。
如果你希望`$*`能包含整个参数,你可以尝试调整`echo`指令,使其直接打印`$*`,而不分割。例如:
```makefile
all: $(wildcard *.qrc)
@echo "编译$(basename $*)"
```
在这个例子中,`$(basename $*)`会提取最后一个依赖文件名,如`language.qrc`。如果只有一个依赖项,这将输出"编译language.qrc"。如果你想保留原始的命令形式,可以考虑使用双引号包裹`$*`,如下:
```makefile
all: $(wildcard *.qrc)
@echo "编译\"$$*\""
```
现在,当运行`make 编译rc language.qrc`时,你会看到"编译"和完整的参数字符串。
阅读全文