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.
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,
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")
Définissez temporairement CURSES_USE_NCURSES sur TRUE pour forcer l'utilisation de NCURSES, plutôt que de laisser CMake essayer de trouver CURSES.
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.)
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
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.