/usr/local
カスタムユーティリティを展開するときは、通常、デフォルトでバイナリをインストールするmakefileを作成します。
PREFIX ?= /usr/local
MANPREFIX ?= ${PREFIX}/man
install:
install utility ${PREFIX}/bin/
install utility.1 ${MANPREFIX}/man1/
ローカルバイナリへのパスはプラットフォーム全体でかなり標準ですが、人のパスはそうではありません。
- Linux:
/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は完璧ではありませんが、通常は車輪を再発明するよりも優れています。