cursesはUnix系システムでの端末制御ライブラリであり。テキストユーザインタフェース (TUI) アプリケーションを作成するのに使われる。
cursesはLinuxなどUNIX準拠の環境で動作するライブラリだが、UNIX以外のWindows環境用に同等の機能を持つPDCursesというライブラリが存在する。
今回はこのPDCursesを導入する方法について作業メモを残す。
環境
OS Windows10
Visual Studio 2022 Community
要点
先にこの作業の要点を記しておく。
やることは至って単純で
- PDCursesのソースコードを取得する。
- ビルドして
.libファイルを作成する。 - 作成した
.libを使えるようにプロジェクトの設定をする。
以上である。
3に関して言えばPDCursesに限った話ではなく、C/C++で外部ライブラリを使うときの一般的な話なので、ここではあまり触れない。
(C/C++で外部ライブラリを使うとか、読み込むというワードで検索をすればいくらでもやり方は出てくるはずなので)
キモとなるのは2でPDCursesのソースコードをビルドして、無事に.libファイルが作れるかどうかである。
では順番に見ていくとする。
1. PDCursesのソースコードを取得する。
ここからソースコードを落とし、適当なフォルダに解凍しておく。
ひとまずD:\tmp\PDCurses-masterに解凍したものとして話を進める。
2. ビルドして.libファイルを作る
前置き
PDCurses for Windows console | PDCurses
ここにWindows向けのビルドに関する情報が書かれている。
要約すると、Visual Studio用のMakefile(ビルドの設定が書かれたもの)があるので、nmake.exeを使ってビルドして下さいね ということ。
nmake.exeとは Visual Studio に含まれているコマンドライン ツールで、Visual Studioをインストールしていれば入っているはず。
またVisual Studioをインストールしていれば、nmake.exeがすぐに使えるよう、もろもろの設定が済んでいる開発者用プロンプトツールも使えるはずである。
スタートメニュで「x64」と打ち込むと
x64 Native Tools Command Prompt for VS 2022 というツールが見つかるはず、これが開発者用プロンプトツールと呼んでいるものである。
見つかったら起動する。
見つからなかったら、泣く。
またこのツールはいくつか種類がある。
この方がまとめてくれていたのでリンクを張らせてもらう。一読するべし。
Visual Studio の Cross Tools / Native Toolsって何? - 物理の駅 Physics station by 現役研究者
ビルド
ビルドする前に、.libを出力するフォルダを作っておく。
今回は以下のように出力用フォルダを作成した。
D
┗ tmp
┗ PDCurses-master
┗ out
┣ x64
┣ x64_debug
┣ x86
┗ x86_debug
準備ができたらまずはx64用の.libを作る。
ビルドすると現在いる場所に.libが作られるようなので、予めout\x64フォルダに移動しておく。
続いて以下のコマンドを実行する。
実行するとout\x64にpdcurses.libファイルが出来上がるはずだ。
(大量の.objファイルもでてくる)
REM 環境変数にソースコードのあるフォルダパスを設定
set PDCURSES_SRCDIR=D:\tmp\PDCurses-master
REM nmake実行
nmake -f D:\tmp\PDCurses-master\wincon\Makefile.vc
これでひとまず.libが出来上がるはず、できなければ、泣く。
あとは必要に応じてDebug版、x86版を用意する。
x64デバッグ版のビルドコマンド
x64 Native Tools Command Prompt for VS 2022を起動し以下のコマンドを実行
REM 出力先に移動
cd D:\tmp\PDCurses-master\out\x64_debug
REM 環境変数にソースコードのあるフォルダパスを設定
set PDCURSES_SRCDIR=D:\tmp\PDCurses-master
REM nmake実行
nmake -f D:\tmp\PDCurses-master\wincon\Makefile.vc DEBUG=Y
x86版のビルドコマンド
x86版のビルドにはx64_x86 Cross Tools Command Prompt for VS 2022を使う。
起動したら以下のコマンドを実行する。
REM 環境変数にソースコードのあるフォルダパスを設定
set PDCURSES_SRCDIR=D:\tmp\PDCurses-master
REM x86 Release版
cd D:\tmp\PDCurses-master\out\x86
nmake -f D:\tmp\PDCurses-master\wincon\Makefile.vc
REM x86 Debug版
cd D:\tmp\PDCurses-master\out\x86_debug
nmake -f D:\tmp\PDCurses-master\wincon\Makefile.vc DEBUG=Y
Visual Studioのプロジェクト設定
前提としてPDCursesのソースコードや、.libは以下のフォルダに配置されているとして話を進める。
D
┗ tmp
┗ PDCurses-master ... curses.hとかがあるフォルダ
┗ out ... 各種libファイルがあるフォルダ
┣ x64
┣ x64_debug
┣ x86
┗ x86_debug
Visual Studioで適当に空のプロジェクトを作成したら、プロジェクト設定を開く。
ビルド構成は、Debut/Releaseとx86/x64で通りあるが、ほぼ同じなので
構成 Debug、プラットフォームx64の場合についてのみ記す。
- C/C++ > 追加のインクルードディレクトリ に
D:\tmp\PDCurses-masterを追加 - リンカー > 追加のライブラリディレクトリに
D:\tmp\PDCurses-master\out\x64_debugを追加 - リンカー > 入力 > 追加の依存ファイルに
pdcurses.libを追加
以上。
これだけ書いておけば、忘れても思い出せるはずと信じる。