/usr/local
사용자 정의 유틸리티를 배포할 때 일반적으로 기본적으로 바이너리를 설치하는 makefile을 작성합니다.
PREFIX ?= /usr/local
MANPREFIX ?= ${PREFIX}/man
install:
install utility ${PREFIX}/bin/
install utility.1 ${MANPREFIX}/man1/
로컬 바이너리에 대한 경로는 플랫폼 전체에서 상당히 표준이지만, 사람 경로는 그렇지 않습니다.
- 리눅스:
/usr/local/share/man
또는/usr/local/man
- 애플 시스템 -
/usr/local/share/man
- BSD:
/usr/local/man
이 makefile을 작성하는 이식 가능한 방법이 있습니까? 사용자가 설치 전에 MANPREFIX를 올바른 경로로 설정하기를 기대하는 것은 무리인 것 같습니다.
편집하다:
!=
BSD make는 경로가 존재하는지 테스트하는 데 사용할 수 있는 지정된 쉘 명령의 사용을 지원합니다 .
SHARE != [ -d ${PREFIX}/share/man ] && echo /share || true
MANPREFIX ?= ${PREFIX}${SHARE}/man
이것은GNU의 새로운 기능, 따라서 아직 이식 가능하지 않을 수 있습니다. 이는 GNU make에서는 작동하지만 BSD make에서는 작동하지 않습니다.
MANPREFIX ?= $(shell [ -d ${PREFIX}/share/man ] && echo ${PREFIX}/share/man || echo ${PREFIX}/man)
답변1
교과서의 대답은 다음과 같습니다.자동 구성. 각 플랫폼에서 올바른 설치 디렉터리를 찾는 것이 작업의 일부입니다.
Autoconf는 완벽하지는 않지만 일반적으로 바퀴를 재발명하는 것보다 낫습니다.