FindCurses

查找 curses 或 ncurses 库

find_package(Curses [...])

Curses 是一个用于类 Unix 系统的终端控制库,用于构建文本用户界面 (TUI) 应用程序。它最初于 1978 年开发,后来演化出多个实现,其中最著名的是 ncurses (new curses)、BSD curses 和 PDCurses (一个用于非 Unix 平台的公共域 curses 库)。

结果变量

此模块定义了以下变量

Curses_FOUND

3.3 版本中新增。

一个布尔值,指示是否找到 Curses。

CURSES_INCLUDE_DIRS

版本 3.1 中新增。

使用 Curses 所需的头文件目录。

CURSES_LIBRARIES

使用 Curses 所需的库。

CURSES_CFLAGS

3.16 版新增。

在使用 Curses 时应提供给 C/C++ 编译器的编译标志。

CURSES_HAVE_CURSES_H

一个布尔值,指示 curses.h 是否可用。

CURSES_HAVE_NCURSES_H

一个布尔值,指示 ncurses.h 是否可用。

CURSES_HAVE_NCURSES_NCURSES_H

一个布尔值,指示 ncurses/ncurses.h 是否可用。

CURSES_HAVE_NCURSES_CURSES_H

一个布尔值,指示 ncurses/curses.h 是否可用。

提示

此模块接受以下变量

CURSES_NEED_NCURSES

如果特别需要 ncurses 实现的功能,请在调用 find_package(Curses) 之前将此变量设置为 TRUE

CURSES_NEED_WIDE

3.10 版本新增。

如果需要 Unicode (宽字符) 支持,请在调用 find_package(Curses) 之前将此变量设置为 TRUE

已弃用变量

以下变量提供用于向后兼容性

CURSES_FOUND

4.2 版已弃用: 使用 Curses_FOUND,其值相同。

一个布尔值,指示是否找到 Curses。

CURSES_INCLUDE_DIR

3.1 版已弃用: 请改用 CURSES_INCLUDE_DIRS 变量。

Curses 头文件目录的路径。

CURSES_LIBRARY

2.4 版已弃用: 请改用 CURSES_LIBRARIES 变量。

Curses 库的路径。

示例

查找 Curses 并创建一个导入的接口目标,用于将其链接到项目目标

find_package(Curses)
if(Curses_FOUND AND NOT TARGET Curses::Curses)
  add_library(Curses::Curses INTERFACE IMPORTED)
  set_target_properties(
    Curses::Curses
    PROPERTIES
      INTERFACE_LINK_LIBRARIES "${CURSES_LIBRARIES}"
      INTERFACE_INCLUDE_DIRECTORIES "${CURSES_INCLUDE_DIRS}"
  )
endif()

add_executable(app app.c)
target_link_libraries(app PRIVATE Curses::Curses)

当特别需要 ncurses 时

set(CURSES_NEED_NCURSES TRUE)
find_package(Curses)