我需要制作一个 Makefile 将 bash 脚本安装到用户bin
目录中,但我不确定执行此操作的最佳方法是什么。我应该使用接受用户输入的变量来指定其 bin 目录的位置,还是有一个环境变量(至少在大多数发行版中)?
答案1
一般来说,用户可能没有 bin 目录。像这样的 Makefile 允许您说make DESTDIR=/usr/local/bin install
安装到 /usr/local/bin,默认安装到 ~/bin
# DESTDIR is where the program should be installed
DESTDIR = $$HOME/bin
prog: a.c b.c
${CC} -o $@ $<
install: prog
mkdir -p ${DESTDIR}
cp $< ${DESTDIR}
这使得程序由几个 C 文件组成。install
如果 bin 目录不存在,则目标会创建该目录(如果存在,则 -p 会阻止它出错),然后复制该文件。请注意$$
shell 变量。
GNU make 仅允许order only prerequisite
在目录不存在时创建该目录,但与编译时间相比,运行 mkdir 的时间可能很短。