FindCurses

查找 curses 或 ncurses 库。

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

结果变量

此模块定义了以下变量

Curses_FOUND

布尔值,指示是否找到 Curses。为了向后兼容,CURSES_FOUND 变量也设置为相同的值。

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_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)