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
を追加
以上。
これだけ書いておけば、忘れても思い出せるはずと信じる。