在分发自定义实用程序时,我通常会编写一个/usr/local
默认情况下安装二进制文件的 makefile
PREFIX ?= /usr/local
MANPREFIX ?= ${PREFIX}/man
install:
install utility ${PREFIX}/bin/
install utility.1 ${MANPREFIX}/man1/
Run Code Online (Sandbox Code Playgroud)
本地二进制文件的路径在不同平台上是相当标准的,但 man 路径不是
/usr/local/share/man
或/usr/local/man
/usr/local/share/man
/usr/local/man
有没有一种可移植的方式来编写这个 makefile?期望用户在安装之前将MANPREFIX 设置为正确的路径似乎是不合理的。
编辑:
BSD 使用 支持分配 shell 命令!=
,可用于测试路径是否存在
SHARE != [ -d ${PREFIX}/share/man ] && echo /share || true
MANPREFIX ?= ${PREFIX}${SHARE}/man
Run Code Online (Sandbox Code Playgroud)
这是GNU make 的一个新特性,所以它可能还不能移植。这适用于 GNU make,但不适用于 BSD make:
MANPREFIX ?= $(shell [ -d ${PREFIX}/share/man ] && echo ${PREFIX}/share/man || echo ${PREFIX}/man)
Run Code Online (Sandbox Code Playgroud)