2011-01-13 14 views
12

Próbuję skompilować bibliotekę openlase z www.marcansoft.com i mam problemy z CMake. CMake zwraca błąd, stwierdzając, że nie może znaleźć Curses, a po wielu poszukiwaniach wciąż jestem zaskoczony co do tego problemu. Sprawdziłem, czy mam zainstalowane różne pakiety ncurses, ale mimo to błąd nadal występuje. Nie jestem bardzo obeznany z CMake, ale udało mi się rozwiązać inne problemy związane z zależnościami, które powstały przed tym. Poniżej przedstawiono dane wyjściowe w terminalu.CMake nie może znaleźć przekleństw

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

Każda pomoc zostanie bardzo doceniona.

  • Tom

Odpowiedz

2

Czy masz zainstalowany pakiet odpowiadający -dev zbyt? W systemie Ubuntu (i prawdopodobnie wszystko, co pochodzi od Debiana) jest to libncurses5-dev. Inne systemy mogą używać -devel lub podobnych znaczników.

Kompilator szuka nagłówków bibliotek, które nie są dostarczane przez standardowy pakiet. (Nagłówki nie są potrzebne w środowisku wykonawczym, tylko podczas kompilacji oprogramowania, dzięki czemu można łatwo usunąć dodatkowe niepotrzebne elementy dla systemów, które nie zamierzają wykonywać żadnych kompilacji oprogramowania.)

+0

Wystarczy dwukrotnie sprawdzić teraz, a pakiet był już zainstalowany i aktualny. – waffleShirt

+0

Cmake ma kilka różnych ścieżek wyszukiwania bibliotek: CMAKE_SYSTEM_LIBRARY_PATH ma być wystarczająco dobra dla bibliotek dostarczanych przez system, CMAKE_LIBRARY_PATH jest dla projektów do dostarczania własnych ścieżek. Być może plik ncurses.h nie znajduje się w domyślnej lokalizacji? Może być konieczne dodanie katalogu zawierającego go do CMAKE_LIBRARY_PATH projektu. – sarnold

+3

Dzięki za pomoc. Skończyłem właśnie wchodząc do pliku FindCurses.cmake i zmuszając go do korzystania z NCURSES zamiast CURSES. Oczyściłem wszystko od razu. – waffleShirt

7

Tymczasowo ustaw CURSES_USE_NCURSES na TRUE na wymusić użycie NCURSES zamiast pozwolić CMake'owi spróbować znaleźć CURSES.

+0

To nie działa. – IanGilham

10

Innym sposobem, aby to naprawić jest dodać te 2 linie do FindCurses.cmake (na górze):

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

To właśnie dla mnie zadziałało. Użyj "zlokalizuj libncurses.so", aby znaleźć lokalizację pliku .so i zastąp go w pierwszym SET podanym powyżej. Na Ubuntu kopalnia była w "/lib/x86_64-linux-gnu/libncurses.so.5.9". FindCurses.cmake znajdował się w /usr/share/cmake-2.8/Modules/FindCurses.cmake dla mnie. – Deadron

1

openlase wiki nie wyświetlając wszystkie potrzebne pakiety. Sprawdź strony wiki na github, aby uzyskać zaktualizowane instrukcje. Dla przekleństw ustawienie brakujący pakiet był libncurses5-dev sudo apt-get install libncurses5-dev

11

Oto co stałe moje problemy na Ubuntu 12.04 x86_64 (64 bit) (Dzięki syslogic)

dla jakiegokolwiek powodu (01:00 może być?) CURSES_USE_NCURSES TRUE nie działa. Więc poszedłem z hackową robotą.

zweryfikowane jest zainstalowany:

$ sudo apt-get install libncurses5-dev 

Zobaczysz coś do skutku: libncurses5-dev is already the newest version.

więc znaleźć bibliotekę i obejmują.

$ locate libncurses.so

lokalizacja Uwaga, kopalnia: /usr/lib/x86_64-linux-gnu/libncurses.so

$ locate curses.h

lokalizacja Uwaga ponownie, kopalnia: /usr/include

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

dodać na początku, tuż po komentarze

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

następnie spłukać powtórzyć proces budowania

./bootstrap 
make 
sudo make install 

ccmake powinien być teraz zainstalowany.

Twój kumpel,

0

Tymczasowo ustawione CURSES_NEED_NCURSES TRUE aby wymusić użycie ncurses, zamiast pozwolić CUpewnij spróbować znaleźć przekleństw.

set(CURSES_NEED_NCURSES TRUE) 

CURSES_USE_NCURSES jest używany przez FindCurses.cmake wewnętrznie, tak że ustawienie nie pomoże.

Powiązane problemy