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"