C++ キー入力処理ライブラルncursesとCMakeの設定, CLionからの実行方法

photo of person typing on computer keyboard

ncursesはC++でキー入力系の処理をするためのライブラリです。

目次

ncursesのインストール

brew install ncurses

ncursesを使ったコードのコンパイルと実行

#include <iostream>
#include <ncurses.h>
int main() {
    std::cout << "Hello, World!" << std::endl;

    initscr();
    printw("hoge");
    endwin();
    return 0;
}

ターミナルからコンパイルと実行

c++ main.cpp -lncurses

./a.out

CMakeを使ったコンパイルと実行

CMakeのインストール

brew install cmake

IDE CLionでCMake Applicationとして実行する場合

Run/Debug ConfigurationsでTargetの名称ncurses_testを確認します。

CMakeLists.txtをmain.cppと同じフォルダに置きます。アプリケーションの名前は先程確認したターゲットの名前ncurses_testにしておきます。

cmake_minimum_required(VERSION 3.24)
project(ncurses_test)

set(CMAKE_CXX_STANDARD 17)

add_executable(ncurses_test main.cpp)

find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})
target_link_libraries(ncurses_test ${CURSES_LIBRARIES})

先程設定を確認したRun Configurationが選択されている状態で実行ボタンをクリックします。

以下のように動作すれば成功です。

/Users/xxx/CLionProjects/ncurses_test/cmake-build-debug/ncurses_test
Hello, World!
ESC>
Process finished with exit code 0

以下のエラーが表示される場合は、Run ConfigurationとCMakeLists.txtのターゲット名が異なる可能性があるため、再確認してください。

[0/1] Re-running CMake...
CMake Error at CMakeLists.txt:10 (target_link_libraries):
  Cannot specify link libraries for target "test" which is not built by this
  project.

ターミナルから実行する場合

コマンドラインから以下のように実行します。(Clionのターミナルではncursesは正常に表示されません。)

cmake .
make
./ncurses_test
よかったらシェアしてね!
目次