make ファイルは postgresql ソースコードで DESTDIR の意味を見つけようとします。

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 は grep に似た rigrep 正規表現コマンドです。
これを理解するために始めましょう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

ただし、上記のロジックがtrueの場合、$(includedir_server)はすでにフルパスです。だから何ですか$(DESTDIR)?この部分はまたどんな役割を果たしますか $(INSTALL) -d

ベストアンサー1

DESTDIRこれは、パッケージを準備したり、外部からchrootにインストールしたりするなど、実際のターゲットパスではなく場所にインストールしたい場合に便利です。ビルドには定義されていませんが、必要に応じて外部で指定されます(参照クロスコンパイル:ビルド(非ターゲット)システムで「make install」を実行します。)。

$(INSTALL) -d引数で与えられたディレクトリを生成します。

おすすめ記事