Makefile 是否有一种优雅的方法来控制“创建目录”的权限;安装-D";?
我正在Makefile中使用Makefile 是否有一种优雅的方法来控制“创建目录”的权限;安装-D";?,makefile,Makefile,我正在Makefile中使用[/usr/bin/]install将一些二进制文件复制到我的$HOME目录中。我的umask设置为700 问题是我正在使用install-D-m 700安装二进制文件,并且父目录是以755而不是700的权限创建的: $ umask 077 $ ls $ touch hello $ ls -l total 0 -rw------- 1 emuso emuso 0 Apr 5 13:15 hello $ install -D -m 700 hello $PWD/thi
[/usr/bin/]install
将一些二进制文件复制到我的$HOME
目录中。我的umask设置为700
问题是我正在使用install-D-m 700
安装二进制文件,并且父目录是以755而不是700的权限创建的:
$ umask
077
$ ls
$ touch hello
$ ls -l
total 0
-rw------- 1 emuso emuso 0 Apr 5 13:15 hello
$ install -D -m 700 hello $PWD/this/is/hello
$ ls -ld this
drwxr-xr-x 3 emuso emuso 4096 Apr 5 13:17 this
$ ls -lR this
this:
total 4
drwxr-xr-x 2 emuso emuso 4096 Apr 5 13:17 is
this/is:
total 0
-rwx------ 1 emuso emuso 0 Apr 5 13:17 hello
我希望目录this
和是
get permissions 700而不是755
我想到的解决办法是:
install-d-m700
手动创建目录结构chmod
手动修复权限因此,我的问题是:是否有一种优雅的方法来控制“install-D”创建的目录的权限?仅通过一次调用
install
似乎无法实现您想要实现的目标,因此您可能不得不求助于mkdir
和install
的组合。根据您的具体情况,您可能能够利用a,使用以下方式:
define einstall
test -d "$(dir $@)" || mkdir -p "$(dir $@)"
install -m 700 $< $@
endef
some/new/test/hello: hello
$(einstall)
define einstall
测试-d“$(dir$@)”| | mkdir-p“$(dir$@)”
安装-m 700$<$@
恩德夫
一些/新的/测试/你好:你好
$(einstall)
如果您计划在MakeV3.81或更高版本中使用罐装食谱,请务必阅读以下答案