Encontrar diretórios personalizados inclui diretórios com autoconf
-
28-10-2019 - |
Pergunta
Estou tentando compilar um programa que usa a biblioteca do festival.
Basicamente, os requisitos são que você inclua os diretórios de cabeçalho do festival e estools no caminho de inclusão e inclua os dois caminhos de biblioteca.
Em uma instalação normal, eles simplesmente permanecem em suas próprias pastas, então você
/some/path/festival/src/include
/some/other/path/estools/include
como o caminho de pesquisa obrigatório e
/some/path/festival/src/lib
/some/other/path/estools/lib
como o caminho da biblioteca.
Acho que a maneira adequada de lidar com isso é com as opções de configuração "--with-estools" e "--with-festival".
No entanto, há uma configuração diferente quando ele é instalado em um sistema debian / ubuntu. Eu gostaria de ser capaz de lidar com essa configuração, onde os caminhos de pesquisa estão
/usr/include/festival
/usr/include/estools
e o caminho de pesquisa é apenas
/usr/lib
Gostaria de detectar o segundo caso e tratá-lo automaticamente, mas ainda exigindo que o usuário especifique os primeiros dois diretórios se o segundo caso não for satisfeito.Como eu faria isso?
Solução
Existe algo que impediria opções de configuração como essa?
-
--festival-includes com um valor padrão (se não definido) para / usr / include / festival
-
--festival-libs com um valor padrão (se não definido) para /usr/lib/libfestival.XXX
O mesmo vale para estools.
Outras dicas
Não há necessidade do mantenedor do pacote se preocupar com esses detalhes;é responsabilidade do usuário.Se o usuário instalou uma biblioteca em um local não padrão, o usuário precisa adicionar LDFLAGS= -L / path / to / lib a um arquivo CONFIG_SITE ou a cada invocação de configure ou colocar esse caminho no caminho de pesquisa do compilador por meioalgum mecanismo dependente do sistema.Da mesma forma, o usuário deve anexar -I / path / to / include ao CPPFLAGS.
Em outras palavras, o debian está fazendo a coisa certa simplesmente instalando as bibliotecas e cabeçalhos no local padrão.Qualquer pessoa que opte por instalar as bibliotecas em um local fora do padrão está se dando mais trabalho.Não é sua responsabilidade consertar os erros deles.
Adicionar opções como --with-festival ou --with-festival-headers não é útil;o usuário pode facilmente atribuir a LDFLAGS e CPPFLAGS, e essas variáveis são padronizadas.
Algumas plataformas adotaram o Filesystem Heirarchy Standard - http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard.
Isso realmente deve ser refletido no autoconf, em vez de insistir que o usuário deve lidar com isso definindo CFLAGS, porque / opt / openssl / lib não é mais um local "não padrão".
O FHS também especifica que / usr / local é uma "hierarquia terciária para dados locais, específica para este host."Portanto, provavelmente / opt deve ser verificado primeiro.
Mais sobre FHS / opt -> http://www.pathname.com / fhs / pub / fhs-2.3.html # OPTADDONAPPLICATIONSOFTWAREPACKAGES