web-dev-qa-db-fra.com

CMake ne peut pas trouver de sorts

J'essaie de compiler la bibliothèque openlase à partir de www.marcansoft.com et je rencontre des problèmes avec CMake. CMake renvoie une erreur indiquant qu'il ne peut pas trouver Curses, et après beaucoup de recherches, je suis toujours perplexe quant à la nature du problème. J'ai vérifié que les différents paquets ncurses sont installés, mais l'erreur persiste. Je ne connais pas très bien CMake, mais j’ai pu résoudre d’autres problèmes de dépendance apparus avant celui-ci. Ce qui suit est la sortie dans le terminal. 

tom@SILVER:~/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!

Toute aide serait grandement appréciée.

  • À M
14
waffleShirt

Voici ce qui corrige mes problèmes sur Ubuntu 12.04 x86_64 (64 bits) (Merci syslogic)

Pour une raison quelconque (1h00 peut-être?), La définition de CURSES_USE_NCURSES TRUE ne semblait pas fonctionner. Alors je suis allé avec un travail de piratage. 

Vérifié c'est installé:

$ Sudo apt-get install libncurses5-dev

Vous verrez quelque chose à l'effet: libncurses5-dev is already the newest version.

Donc, trouver la bibliothèque et inclure.

$ locate libncurses.so

Notez l'emplacement, le mien: /usr/lib/x86_64-linux-gnu/libncurses.so

$ locate curses.h

Notez à nouveau l'emplacement, le mien: /usr/include

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

ajouter en haut, juste après les commentaires

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

puis rincer répéter le processus de construction

./bootstrap
make 
Sudo make install

ccmake devrait maintenant être installé.

Ton pote,

12
rnordeen

Un autre moyen de résoudre ce problème consiste à ajouter ces 2 lignes à FindCurses.cmake (en haut):

set(CURSES_LIBRARY "/opt/lib/libncurses.so")
set(CURSES_INCLUDE_PATH "/opt/include")
10
Martin Zeitler

Définissez temporairement CURSES_USE_NCURSES sur TRUE pour forcer l'utilisation de NCURSES, plutôt que de laisser CMake essayer de trouver CURSES.

7
waffleShirt

Le package -dev correspondant est-il également installé? Sur Ubuntu (et probablement tout ce qui est dérivé de Debian), il s'agit de libncurses5-dev. D'autres systèmes peuvent utiliser -devel ou des balises similaires.

Le compilateur recherche les en-têtes de bibliothèque et ceux-ci ne sont pas fournis par le paquet standard. (Les en-têtes ne sont pas nécessaires au moment de l'exécution, uniquement lors de la compilation de logiciels. Ils facilitent donc la suppression de fichiers inutiles pour les systèmes qui ne compileront aucun logiciel.)

2
sarnold

Le wiki openlase n’affichait pas tous les packages nécessaires. Vérifiez leurs pages wiki sur github pour des instructions mises à jour. Pour les sorts, le paquet manquant était libncurses5-dev Sudo apt-get install libncurses5-dev

1
Jason Briggs

Définissez temporairement CURSES_NEED_NCURSES sur TRUE pour forcer l'utilisation de NCURSES, plutôt que de laisser CMake essayer de trouver CURSES.

set(CURSES_NEED_NCURSES TRUE)

CURSES_USE_NCURSES est utilisé par FindCurses.cmake en interne, donc les réglages qui ne vont pas aider.

0
JoeAndrieu