2011-01-13 178 views
12

我想从www.marcansoft.com编译openlase库,并且遇到了CMake的问题。 CMake返回一个错误,指出它找不到诅咒,经过很多观察后,我仍然难以理解问题是什么。我检查了我安装了各种ncurses软件包,但仍然存在错误。我不是很熟悉CMake,但是我能够解决在此之前出现的其他依赖问题。以下是终端中的输出。CMake无法找到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! 

任何帮助将不胜感激。

  • 汤姆

回答

2

你已经安装了相应的-dev包吗?在Ubuntu上(可能来自Debian的任何东西)都是libncurses5-dev。其他系统可能使用-devel或类似的标签。

编译器正在查找库标题,而标准程序包未提供这些标题。 (在运行时不需要头文件,只有在编译软件时才需要,所以它们可以很容易地去除那些不会进行任何软件编译的系统的额外无用的东西。)

+0

现在只需再次检查,该软件包已安装并且是最新的。 – waffleShirt 2011-01-13 11:22:41

+0

Cmake有几个不同的库搜索路径:CMAKE_SYSTEM_LIBRARY_PATH对于系统提供的库应该足够好,CMAKE_LIBRARY_PATH用于为项目提供自己的路径。也许你的ncurses.h文件不在默认位置?您可能需要将包含它的目录添加到项目的CMAKE_LIBRARY_PATH中。 – sarnold 2011-01-13 11:43:44

+3

感谢您的帮助。我最终进入FindCurses.cmake文件并强制它使用NCURSES而不是CURSES。马上清理一切。 – waffleShirt 2011-01-14 23:37:20

7

暂时将CURSES_USE_NCURSES设置为TRUE强制使用NCURSES,而不是让CMake尝试查找CURSES。

10

另一种方式来解决它是这2行添加到FindCurses.cmake(顶部):

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

的openlase维基并没有显示所有需要的软件包。在github上查看wiki页面以获取更新的说明。对于诅咒缺少的包是好libncurses5-dev的sudo apt-get install libncurses5-dev

11

这里是固定在Ubuntu 12.04 x86_64的(64位)(感谢syslogic)

我的问题,无论出于何种原因(上午1:00也许α)设置CURSES_USE_NCURSES TRUE似乎不起作用。所以我去了一个黑客工作。

验证它的安装:

$ sudo apt-get install libncurses5-dev 

您将看到的东西效果:libncurses5-dev is already the newest version.

于是找到库和包括。

$ locate libncurses.so

注意位置,矿山:/usr/lib/x86_64-linux-gnu/libncurses.so

$ locate curses.h

注位置再次,矿山: /usr/include

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

添加在顶部,右后评论

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

然后用清水冲洗重复构建过程现在应该安装

./bootstrap 
make 
sudo make install 

ccmake。

你的朋友,

0

暂时将CURSES_NEED_NCURSES为TRUE,以强制使用NCURSES的,而不是让CMake的尝试找到诅咒。

set(CURSES_NEED_NCURSES TRUE) 

CURSES_USE_NCURSES由FindCurses.cmake在内部使用,因此设置不起作用。