追加并用空格分隔
https://superuser.com/questions/360178/what-does-make-install-do
尝试理解以下 make 命令。
installincludes:
$(INSTALL) -d '$(DESTDIR)$(includedir_server)/'
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(RELATIVE_INCLUDES)) '$(DESTDIR)$(includedir_server)/'
rg 是 rigrep 正则表达式命令,类似于 grep。
为了理解这一点,我首先从 开始includedir_server
。
pg_config | rg server
返回
INCLUDEDIR-SERVER = /usr/include/postgresql/15/server
在文件夹/src
(postgresql源代码)中执行
cat Makefile.global.in | rg --line-number 'includedir_server'
返回
170:includedir_server = $(pkgincludedir)/server
248:override CPPFLAGS := -I$(includedir_server) -I$(includedir_internal) $(CPPFLAGS)
现在明白了,$(INSTALL) -d '$(DESTDIR)$(includedir_server)/'
我觉得以下逻辑是正确的。
$(includedir_server) == $(pkgincludedir)/server == /usr/include/postgresql/15/server
但如果上述逻辑为真,那么 $(includedir_server) 已经是完整路径了。那么什么是$(DESTDIR)
?这部分还有 $(INSTALL) -d
什么作用?
答案1
DESTDIR
适合当您想要安装到真实目标路径以外的某个位置时使用,例如,如果您正在准备软件包或从外部安装到 chroot 中。您不会发现它在构建中定义,而是在必要时在外部指定(请参阅交叉编译:在构建(非目标)系统上运行“make install”)。
$(INSTALL) -d
创建作为参数给出的目录。