2011-03-30 10 views
11

Estoy compilando una dependencia para un proyecto en Ubuntu 10.10, y en lugar de instalarlo en/usr/local de forma predeterminada, lo instalo en/tmp/stage/usr/local. ¿Cómo informo a CMake de la ubicación de esta dependencia instalada personalizada cuando la llamo para generar los archivos de compilación para dicho proyecto?CMake no puede encontrar FFMPEG en la ruta de instalación personalizada

Me postulo CMake 2.8.1, y he tratado de establecer CMAKE_PREFIX_PATH en la línea de comando cmake, al igual que

cmake -D CMAKE_PREFIX_PATH=/tmp/stage/usr/local 

pero esto no parece hacer una diferencia - el proyecto no hace parece detectar la dependencia.

Además, si importa, el proyecto en cuestión es OpenCV 2.2, y la dependencia en cuestión es FFMPEG ...

+0

Estoy confundido por esta pregunta, ¿está diciendo que tiene FFMPEG instalado en/tmp/stage/usr/local y está intentando construir opencv contra ese FFMPEG? ¿O está intentando instalar algo con cmake en/tmp/stage/usr/local? – ltc

+0

FFMPEG está instalado en/tmp/stage/usr/local y estoy intentando construir OpenCV contra ese FFMPEG, sí ... – hatboyzero

Respuesta

19

me di cuenta de cómo solucionar mi problema, y ​​tratando de señalar CMake en la instalación apropiada la ubicación no es el problema.

Aparentemente, CMake no puede encontrar los archivos pkg-config para FFMPEG (es decir, libavcodec.pc, libavdevice.pc, etc.) que indican dónde se encuentran los encabezados y las bibliotecas de FFMPEG. En un escenario de instalación típico, estos archivos se ubicarían en/usr/lib/pkgconfig. Sin embargo, debido a la ubicación de instalación personalizada, en su lugar se encuentran en/tmp/stage/usr/local/lib/pkgconfig.

Para que CMake podría encontrar estos archivos, he tenido que añadir la siguiente variable de entorno:

export PKG_CONFIG_PATH=/tmp/stage/usr/local/lib/pkgconfig 

Después de ese momento, OpenCV construye contra FFMPEG como se esperaba.

+1

Parece que tengo el mismo problema que la pregunta original, pero estoy usando CentOS 6.5. después de que OpenCV falle, veo que la variable $ PKG_CONFIG_PATH está configurada en/usr/lib/pkgconfig y que el directorio contiene solo el archivo zlib.pc. ¿Es normal? Instalé ffmpeg y opencv build quejándose al vincular opencv_perf_video, que tiene una referencia indefinida a 'avformat_network_init' que se encuentra en ffmpeg source. No sé dónde está instalado ffmpeg (traté de dar prefix =/usr/local pero no puedo encontrarlo allí) –

+0

Supongo que la variable se estableció a través de un script bash o manualmente en el terminal. ¿Sabes cómo puedes establecer esto directamente desde cmake? Intenté establecer (ENV {PKG_CONFIG_PATH} "$ {PROJECT_SOURCE_DIR}/libs/ffmpeg/build/lib/pkgconfig"), pero de alguna manera no exporta PKG_CONFIG_PATH y, por lo tanto, falla la compilación. – infoclogged

Cuestiones relacionadas