CMake无法找到诅咒

waf*_*irt 14 linux curses ncurses cmake

我正在尝试从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!
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

  • 汤姆

rno*_*een 12

这是修复我在Ubuntu 12.04 x86_64(64位)上的问题(谢谢syslogic)

无论出于何种原因(可能是凌晨1点?)设置CURSES_USE_NCURSES TRUE似乎不起作用.所以我去了一个黑客工作.

已验证已安装:

$ sudo apt-get install libncurses5-dev
Run Code Online (Sandbox Code Playgroud)

你会看到一些效果: 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")
Run Code Online (Sandbox Code Playgroud)

然后冲洗重复构建过程

./bootstrap
make 
sudo make install
Run Code Online (Sandbox Code Playgroud)

现在应该安装ccmake.

你的朋友,

  • 您可以设置 cmake 变量而不是编辑 cmake 文件: `cmake -DCURSES_LIBRARY=/usr/lib/x86_64-linux-gnu/libncurses.so -DCURSES_INCLUDE_PATH=/usr/include ./` (2认同)

Mar*_*ler 10

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

set(CURSES_LIBRARY "/opt/lib/libncurses.so")
set(CURSES_INCLUDE_PATH "/opt/include")
Run Code Online (Sandbox Code Playgroud)

  • 这才是最终为我工作的东西。使用“ locate libncurses.so”查找.so文件的位置,并将其替换为上面给出的第一个SET。在Ubuntu上,我的位于“ /lib/x86_64-linux-gnu/libncurses.so.5.9”。FindCurses.cmake对我来说位于/usr/share/cmake-2.8/Modules/FindCurses.cmake中。 (2认同)

waf*_*irt 7

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


sar*_*old 2

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

编译器正在寻找库标头,而标准包未提供这些标头。(这些标头在运行时不需要,只有在编译软件时才需要,因此它们可以轻松地为不进行任何软件编译的系统删除多余的无用内容。)

  • 谢谢您的帮助。我最终只是进入 FindCurses.cmake 文件并强制它使用 NCURSES 而不是 CURSES。立刻把一切都清理干净了。 (3认同)