2011-01-13 19 views
12

Estoy tratando de compilar la biblioteca de openlase desde www.marcansoft.com y he estado teniendo problemas con CMake. CMake está devolviendo un error que indica que no puede encontrar Curses, y después de mucho mirar todavía estoy perplejo en cuanto a cuál es el problema. He comprobado que tengo instalados los diversos paquetes ncurses, pero el error persiste. No estoy muy familiarizado con CMake, pero pude resolver otros problemas de dependencia que surgieron antes de este. Lo siguiente es la salida en la terminal.CMake no puede encontrar Curses

[email protected]:~/dev/openlase$ cmake ./ 
-- Found JACK 
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:70 (MESSAGE): 
    Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH) 
Call Stack (most recent call first): 
    /usr/share/cmake-2.8/Modules/FindCurses.cmake:159 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) 
    examples/27c3_slides/CMakeLists.txt:3 (find_package) 


-- Configuring incomplete, errors occurred! 

Cualquier ayuda sería muy apreciada.

  • Tom

Respuesta

2

Foro de haber instalado el paquete correspondiente -dev también? En Ubuntu (y probablemente cualquier cosa derivada de Debian) es libncurses5-dev. Otros sistemas pueden usar -devel o etiquetas similares.

El compilador está buscando los encabezados de la biblioteca, y esos no son proporcionados por el paquete estándar. (Los encabezados no son necesarios durante el tiempo de ejecución, solo cuando compilan software, por lo que facilitan la eliminación de elementos extra inútiles para los sistemas que no van a hacer compilación de software.)

+0

Solo comprobé dos veces y ese paquete ya estaba instalado y actualizado. – waffleShirt

+0

Cmake tiene varias rutas de búsqueda de bibliotecas diferentes: se supone que CMAKE_SYSTEM_LIBRARY_PATH es suficientemente buena para las bibliotecas proporcionadas por el sistema, CMAKE_LIBRARY_PATH es para que los proyectos proporcionen sus propios caminos. ¿Quizás su archivo ncurses.h no está en la ubicación predeterminada? Es posible que deba agregar el directorio que lo contiene a CMAKE_LIBRARY_PATH de su proyecto. – sarnold

+3

Gracias por la ayuda. Terminé yendo al archivo FindCurses.cmake y forzándolo a usar NCURSES en lugar de CURSES. Despejó todo de inmediato. – waffleShirt

7

Establezca temporalmente CURSES_USE_NCURSES en TRUE a fuerce el uso de NCURSES, en lugar de dejar que CMay trate de encontrar CURSOS.

+0

Esto no funciona. – IanGilham

10

Otra forma de solucionarlo es añadir estas líneas 2 a FindCurses.cmake (en la parte superior):

set(CURSES_LIBRARY "/opt/lib/libncurses.so") 
set(CURSES_INCLUDE_PATH "/opt/include") 
+1

Esto es lo que finalmente funcionó para mí. Use "locate libncurses.so" para encontrar la ubicación del archivo .so y reemplácelo en el primer SET dado arriba. En Ubuntu, el mío estaba en "/lib/x86_64-linux-gnu/libncurses.so.5.9". FindCurses.cmake se encuentra en /usr/share/cmake-2.8/Modules/FindCurses.cmake para mí. – Deadron

1

El openlase wiki no era mostrar todos los paquetes necesarios. Consulte las páginas wiki en github para obtener instrucciones actualizadas. Para maldiciones el paquete faltante era libncurses5-dev sudo apt-get install libncurses5-dev

11

Esto es lo que fija mis problemas en Ubuntu 12.04 x86_64 (64 bits) (Gracias syslogic)

Por alguna razón (01 a.m. tal vez?) El establecimiento CURSES_USE_NCURSES TRUE no parece funcionar. Así que fui con un trabajo de hackeo.

verificó que se instala:

$ sudo apt-get install libncurses5-dev 

Usted verá algo al efecto: libncurses5-dev is already the newest version.

por lo que encontrar la biblioteca e incluyen.

$ locate libncurses.so

Nota ubicación, la mía: /usr/lib/x86_64-linux-gnu/libncurses.so

$ locate curses.h

Nota lugar de nuevo, la mía: /usr/include

En: <cmake source dir>/Modules/FindCurses.cmake

añadir en la parte superior, justo después de los comentarios

set(CMAKE_INCLUDE_PATH "/usr/include") 
set(CMAKE_LIBRARY_PATH "/usr/lib/x86_64-linux-gnu/libncurses.so") 

luego enjuague repetir el proceso de construcción

./bootstrap 
make 
sudo make install 

ccmake ahora debe ser instalado.

Tu amigo,

0

Temporalmente conjunto CURSES_NEED_NCURSES TRUE para forzar el uso de Ncurses, en lugar de dejar CMake tratar de encontrar maldiciones.

set(CURSES_NEED_NCURSES TRUE) 

CURSES_USE_NCURSES es utilizado por FindCurses.cmake internamente, por lo que la configuración no ayudarán.