Makefile
$() 和 ${}
除了 $ 之外,$() 和 ${} 都是 make 替换变量的语法。但是 ${} 还能被某些 shell(比如 bash)继续替换。
此外,它们也能调用 make 提供的命令,比如字符串替换、过滤和调用 shell。
Shell 函数无法正常传递 * 参数
是因为 make 传参的时候将引号去掉了,导致星号又被 shell 解释了一次(我用的 MSYS2)。
$ cat Makefile
all:
echo \'*\'
$ make
echo \'*\'
'*'
$ nvim Makefile
$ cat Makefile
all:
echo '*'
$ make
echo '*'
Makefile
兼容性
- 使用
./来表示路径,不要使用.\。(但是这样 cmd 解释不了,得用 bash 才行) - 使用命令名来调用,不要使用
.exe后缀。
这是一种处理兼容性的方式:
/=/
ifeq ($(OS),Windows_NT)
/=\\
endif
all:
echo "C:$/Users$/userA$/Downloads"