
スペースで追加と分離
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
引数で与えられたディレクトリを生成します。