A resposta do livro didático é usar autoconf . Encontrar os diretórios de instalação corretos em todas as plataformas é parte de seu trabalho.
Autoconf não é perfeito, mas muitas vezes é melhor do que reinventar a roda.
Ao distribuir um utilitário personalizado, normalmente gravarei um makefile que instala binários em /usr/local
por padrão
PREFIX ?= /usr/local
MANPREFIX ?= ${PREFIX}/man
install:
install utility ${PREFIX}/bin/
install utility.1 ${MANPREFIX}/man1/
O caminho para os binários locais é bastante padrão em diferentes plataformas, mas o caminho do homem não é
/usr/local/share/man
ou /usr/local/man
/usr/local/share/man
/usr/local/man
Existe uma maneira portátil de escrever este makefile? Não parece razoável esperar que os usuários definam MANPREFIX para o caminho correto antes de instalar.
EDITAR:
O BSD faz a designação de suporte de um comando shell usando !=
, que pode ser usado para testar se existe um caminho
SHARE != [ -d ${PREFIX}/share/man ] && echo /share || true
MANPREFIX ?= ${PREFIX}${SHARE}/man
Este é um novo novo recurso para o GNU make , então é provável que não portátil ainda. Isso funciona no GNU make, mas não no BSD make:
MANPREFIX ?= $(shell [ -d ${PREFIX}/share/man ] && echo ${PREFIX}/share/man || echo ${PREFIX}/man)
A resposta do livro didático é usar autoconf . Encontrar os diretórios de instalação corretos em todas as plataformas é parte de seu trabalho.
Autoconf não é perfeito, mas muitas vezes é melhor do que reinventar a roda.