공백으로 추가 및 분리
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
인수로 주어진 디렉터리를 생성합니다.