22

我正在尝试从www.marcansoft.com编译 openlase 库,并且遇到了 CMake 问题。CMake 返回一个错误,指出它找不到 Curses,经过大量查找后,我仍然对问题所在感到困惑。我检查了我是否安装了各种 ncurses 包,但错误仍然存​​在。我对 CMake 不是很熟悉,但我能够解决在此之前出现的其他依赖问题。以下是终端中的输出。

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!

任何帮助将不胜感激。

  • 汤姆
4

6 回答 6

24

这是解决我在 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。

你的朋友,

于 2013-02-07T07:01:45.437 回答
14

修复它的另一种方法是将这两行添加到 FindCurses.cmake (在顶部):

set(CURSES_LIBRARY "/opt/lib/libncurses.so")
set(CURSES_INCLUDE_PATH "/opt/include")
于 2012-12-15T16:40:27.570 回答
7

Temporarily set CURSES_USE_NCURSES to TRUE to force the use of NCURSES, rather than letting CMake try to find CURSES.

于 2011-01-14T23:39:02.133 回答
2

你也-dev安装了相应的包吗?在 Ubuntu 上(可能任何从 Debian 派生的东西)它是libncurses5-dev. 其他系统可能会使用-devel或类似的标签。

编译器正在寻找库头文件,而标准包没有提供这些头文件。(运行时不需要这些标头,仅在编译软件时才需要,因此它们可以轻松删除那些不会进行任何软件编译的系统的额外无用内容。)

于 2011-01-13T10:21:49.267 回答
1

openlase wiki 没有显示所有需要的包。检查 github 上的 wiki 页面以获取更新的说明。对于 curses,缺少的包是 libncurses5-devsudo apt-get install libncurses5-dev

于 2013-02-07T00:25:28.503 回答
0

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

set(CURSES_NEED_NCURSES TRUE)

CURSES_USE_NCURSES 由 FindCurses.cmake 内部使用,因此设置将无济于事。

于 2014-06-10T03:57:59.983 回答