Make
製作文件試圖找出postgresql原始碼DESTDIR的意思
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
什麼作用?
DESTDIR
適用於當您想要安裝在真實目標路徑之外的某個位置時使用,例如,如果您正在準備一個包,或者如果您正在從外部安裝到 chroot 中。您不會在建構中找到它,它是在必要時在外部指定的(請參閱交叉編譯:在建構(非目標)系統上執行make install
)。
$(INSTALL) -d
創建作為參數給出的目錄。