2011-01-13 18 views
12

Sto provando a compilare la libreria openlase da www.marcansoft.com e ho riscontrato problemi con CMake. CMake sta restituendo un errore affermando che non è possibile trovare Maledizioni e, dopo un sacco di ricerche, sono ancora perplesso su quale sia il problema. Ho controllato che ho i vari pacchetti ncurses installati, ma ancora l'errore persiste. Non sono molto familiare con CMake ma sono stato in grado di risolvere altri problemi di dipendenza sorti prima di questo. Quello che segue è l'output nel terminale.CMake non trova le maledizioni

[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! 

Qualsiasi aiuto sarebbe molto apprezzato.

  • Tom

risposta

2

Avete il pacchetto corrispondente -dev installato troppo? Su Ubuntu (e probabilmente su qualsiasi cosa derivata da Debian) è libncurses5-dev. Altri sistemi possono utilizzare -devel o tag simili.

Il compilatore sta cercando le intestazioni della libreria e quelle non sono fornite dal pacchetto standard. (Le intestazioni non sono necessarie in fase di esecuzione, solo durante la compilazione del software, quindi rendono facile rimuovere elementi inutili per sistemi che non eseguiranno alcuna compilazione di software.)

+0

Appena ricontrollato ora e quel pacchetto era già installato e aggiornato. – waffleShirt

+0

Cmake ha diversi percorsi di ricerca della libreria: CMAKE_SYSTEM_LIBRARY_PATH dovrebbe essere abbastanza buono per le librerie fornite dal sistema, CMAKE_LIBRARY_PATH è per i progetti che forniscono i propri percorsi. Forse il tuo file ncurses.h non si trova nel percorso predefinito? Potrebbe essere necessario aggiungere la directory che la contiene al CMAKE_LIBRARY_PATH del progetto. – sarnold

+3

Grazie per l'aiuto. Ho finito per andare nel file FindCurses.cmake e costringendolo a usare NCURSES invece di CURSES. Completato tutto subito. – waffleShirt

7

Imposta temporaneamente CURSES_USE_NCURSES su TRUE su forzare l'uso di NCURSES, piuttosto che lasciare che CMake cerchi di trovare i CURSES.

+0

Questo non funziona. – IanGilham

10

Un altro modo per risolvere il problema è quello di aggiungere queste 2 righe per FindCurses.cmake (in alto):

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

Questo è ciò che alla fine ha funzionato per me. Usa "locate libncurses.so" per trovare il percorso del file .so e sostituirlo nel primo SET dato sopra. Su Ubuntu il mio era in "/lib/x86_64-linux-gnu/libncurses.so.5.9". FindCurses.cmake si trovava in /usr/share/cmake-2.8/Modules/FindCurses.cmake per me. – Deadron

1

L'openlase wiki non è stato visualizza tutti i pacchetti necessari. Controlla le pagine wiki su github per le istruzioni aggiornate. Per maledizioni il pacchetto mancante era libncurses5-dev sudo apt-get install libncurses5-dev

11

Ecco quello fissato i miei problemi su Ubuntu 12.04 x86_64 (64 bit) (Grazie syslogic)

Per qualsiasi motivo (01:00 forse?) Impostando CURSES_USE_NCURSES TRUE non sembra funzionare. Quindi sono andato con un lavoro di hacking.

verificato la sua installazione:

$ sudo apt-get install libncurses5-dev 

Si vedrà qualcosa per l'effetto: libncurses5-dev is already the newest version.

Così trovare la libreria e comprendono.

$ locate libncurses.so

Annotare la posizione, la mia: /usr/lib/x86_64-linux-gnu/libncurses.so

$ locate curses.h

Nota posizione ancora una volta, il mio: /usr/include

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

aggiungere in alto, subito dopo i commenti

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

quindi risciacquare ripetere il processo di compilazione dovrebbe ora essere installato

./bootstrap 
make 
sudo make install 

ccmake.

Il tuo amico,

0

temporaneamente impostato CURSES_NEED_NCURSES TRUE per forzare l'uso di NCURSES, piuttosto che lasciare che CMake cercare di trovare maledizioni.

set(CURSES_NEED_NCURSES TRUE) 

CURSES_USE_NCURSES è utilizzato dal FindCurses.cmake internamente in modo impostazione che non aiuta.