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인수로 주어진 디렉터리를 생성합니다.

관련 정보