Usando o gettext no configure

0

Estou tentando compilar um programa que requer o gettext (para intltools) no macOS. Eu tentei os seguintes comandos para executar o script de configuração:

LDFLAGS=-L/usr/local/opt/gettext/lib CPPFLAGS=-I/usr/local/opt/gettext/include ./configure
LDFLAGS=/usr/local/opt/gettext/lib CPPFLAGS=/usr/local/opt/gettext/include ./configure

No primeiro caso, falhou com a seguinte mensagem de erro

configure: error: GNU gettext tools not found; required for intltool

No último caso, não foi possível encontrar o compilador C

Qual é o caminho certo para resolver esse tipo de problema? Eu entendo que isso provavelmente está relacionado a isso

    
por Sum Proxy 19.08.2017 / 07:45

1 resposta

4

O script configure falha porque não consegue encontrar as ferramentas gettext no $PATH atual. Essas ferramentas incluem xgettext , msgfmt e outros binários.

No macOS com Homebrew, o pacote gettext Homebrew realmente instala esses binários, mas eles estão localizados no diretório /usr/local/Cellar/gettext/0.18.1.1/bin em vez de diretamente em /usr/local/bin .

A razão para isso é que o Homebrew instala todos os "keggs" na "adega" e gettext é um pacote "keg".

Se tudo estiver funcionando como deveria, suas ferramentas gettext já devem estar simbolicamente vinculadas do diretório Cellar para /usr/local/bin e, se a configuração do Homebrew estiver correta, /usr/local/bin deve estar no seu $PATH .

Obviamente, isso não é configurado corretamente, por isso, sugiro que você verifique se o $PATH está configurado corretamente com /usr/local/bin antes de /usr/bin e se os links para o gettext tools existe do porão para o diretório /usr/local/bin . Corrigir uma ou ambas as coisas resolverá esse problema para você.

Atualização: de acordo com esta resposta do superusuário , os links simbólicos para as ferramentas gettext podem não ser configurados corretamente padrão. O seguinte comando irá corrigir:

$ brew link gettext --force

Depois de ter compilado o seu outro aplicativo, você pode desfazer o acima com

$ brew unlink gettext

... se você quiser.

Esta outra resposta no StackOverflow continua explicando que executáveis de pacotes Homebrew que são "somente barris" ( gettext é um desses) não vinculado da "adega" para /usr/local/bin . Isso é por design. Isso explica por que a etapa brew link será necessária para que seu script configure funcione corretamente.

A razão pela qual os binários "keg-only" não são colocados em você $PATH , por padrão, é que eles podem interferir com ferramentas de nome similar já presentes no sistema base do macOS.

    
por 21.08.2017 / 08:12