Faça o problema com includes [closed]

3

Estou instalando o imagick-v3.1.0RC2 package no CentOS 5.5. Eu tenho o ImageMagick 6.7.9-9 instalado e tenho um problema na etapa make .

O problema é que não é possível encontrar o arquivo incluído:

/usr/local/include/ImageMagick/wand/magick/accelerate.h:25:31: error: magick/morphology.h: No such file or directory

Se eu copiar a pasta magick em /usr/local/include/ImageMagick/wand/magick/magick então ele vai achar, mas vai dizer que algum outro arquivo está faltando em magic/xxx.h então eu tenho que copiar magick novamente e de novo deve haver alguma maneira de contornar?

Eu criei um link simbólico em /ImageMagick/wand/magick ln -s ../magick magick , mas ele ainda tem o mesmo problema dentro do arquivo accelerate.h na linha 25, ele tem #include <magick/random_.h>

Eu também tentei fazer

make --include-dir=/usr/local/include/ImageMagick/ --include-dir=/usr/local/include/ImageMagick' and 'make -I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick

Acabei executando make -n para mostrar todos os comandos que são executados e, em seguida, adicionei -I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick a eles e executamos um por um manualmente.

Não há caminho mais rápido?

EDITAR, RESOLVIDO:

O truque era encontrar onde o arquivo está com find / --name "missing.file" e, em seguida, adicionar os links simbólicos na pasta em que eu executo Make, por exemplo, /usr/src/imagick-v3.1.0RC2/

ln -s usr/local/include/ImageMagick/magick magick

e

ln -s usr/local/include/ImageMagick/wand wand
    
por John Smith 02.10.2012 / 21:21

2 respostas

0

tente adicionar -I até o diretório da varinha como -I/usr/local/include/ImageMagick/wand ou -I/usr/local/include/ImageMagick/wand/magick

    
por 02.10.2012 / 23:21
0

Sinto muito, mas você parece entender mal o make completamente. Eu suponho que estamos falando sobre o GNU make para esta resposta, embora algumas pessoas parecem negar a existência de sabores alternativos.

O que você consegue com essas duas linhas:

make --include-dir=/usr/local/include/ImageMagick/ --include-dir=/usr/local/include/ImageMagick
make -I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick

é que você passa esses parâmetros para make . Bem, isso é legal e tudo mais, mas inclui inclusões no Makefile / GNUmakefile , não nas inclusões usadas por qualquer compilador chamado pelo processo make .

Para conseguir isso, o melhor é executá-lo como:

make -npf /dev/null

(canalize para less ou mais)

para ter uma ideia das regras padrão. Supondo que você queira que o compilador C ou C ++ localize esses arquivos e supondo que o processo make use as regras e / ou convenções padrão, você deve ser capaz de definir uma das seguintes variáveis:

  • CPPFLAGS (sinalizadores de pré-processador C)
  • CFLAGS (sinalizadores do compilador C)
  • CXXFLAGS (sinalizadores do compilador C ++)

Para ver os detalhes exatos do seu make check-out

make -np
# or ...
make -npf Makefile

caso as regras padrão sejam redefinidas.

Dependendo das partes internas do processo make , isso ajudará a apontar o compilador para o local correto. Por exemplo, se o GCC for usado para compilação e , a vinculação de CPPFLAGS deve funcionar bem. Em seu exemplo, você gostaria de invocar make como:

make CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick"

assumindo que você não quer apenas usar o destino padrão, mas um destino chamado install que você faria:

make CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick" install

... e outra alternativa é passar a variável como variável de ambiente para make instead de passar na linha de comando:

CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick" make

... de maneira semelhante, você pode definir define ( -DNAMEOFDEFINE=VALUE ).

    
por 12.06.2014 / 23:42