ここでは詳しい説明は省略します。
npiet - an interpreter and editor for the piet programming language
npietというPietのインタプリタがあります。
このインタプリタは、Pietの公式ページでも推奨されているようなので、やはりこれを使いたいと考えます。
(http://www.dangermouse.net/esoteric/piet/tools.html より引用)Erik Schoenfelder has written npiet, a very nice Piet interpreter with the ability to print program traces and a supporting Piet editor! It's feature-packed and the best version I'm aware of.
さて、npietのページを見ると、windowsのバイナリが用意されています。
「おっ!親切設計じゃん!」と思え、確かに実用的なのですが、2点ほど欠点があります。
・最新版ではない (バイナリにはよくあること)
・ソースコードのパスを何も考えずに渡すと、謎の警告が出力される
オフトピック
「謎の警告」と表現していますが、英語が読めないわけではないですよ!念のため。
どうせ./configureしてmakeしてmake installするだけだろ、そう思っていた時期が私にもありました。
コンパイラ「gd.hが無いよ!」(轟沈)
俺「はいはいlibgdをダウンロードして./configureしてmakeしてmake installしてパスを指定すればいいんだろ」
そう思っていた時期が私にもありました。
見てくださいこの大量の要求ライブラリ!
日- npiet
├日- libpng
│└- zlib
├日- libgd
│├- jpeg
│├日- libpng (他の所でビルド済み)
││└- zlib (他の所でビルド済み)
│├日- libXpm (ビルド失敗)
││└日- imake
││ ├- (CPPFLAGS=-I(xprotoのinclude)/X11 -Dinline_syntax=1)
││ └- xproto
│├日- tiff (認識しないのでサポートを外した)
││├- xz
││├- zlib (他の所でビルド済み)
││└- jpeg (他の所でビルド済み)
│├日- libvpx (ビルド中止)
││└- yasm
│├日- freetype (ビルド失敗)
││├日- bzip2
│││└- (make installでBad file numberと怒られたら、touchでそのファイルを作成)
││├- zlib (他の所でビルド済み)
││└- libpng (他の所でビルド済み)
│└日- fontconfig (ビルド失敗)
│ ├日- libxml2 (ビルド失敗)
│ │├- zlib (他の所でビルド済み)
│ │└- lzma -> xz (他の所でビルド済み)
│ └- expat (libxml2とどちらか1個でよい)
└- giflib
► スポイラーを表示
結果→makeがutilに入ったあと、mkstempが無いよ!と怒られ、死亡。
これも轟沈かと思われましたが、気にせずmake installを実行したら奇跡的に必要なライブラリは確保できました。
さて、いよいよnpiet本体のビルドです。
これまでのライブラリみたいに要求されたライブラリのパスを設定して./configure、ビルドします。
コンパイラ「gd.hがないよ!」
俺「は!?ちゃんと環境変数にパス入れたよ!?何言ってるの?」
Makefile「いつから設定が反映されていると錯覚していた…」
めんどくさいのでMakefileのCCに設定されている"gcc"の後ろに直接パスの設定を書き込みます。
gcc「undefined reference!!!!!」(轟沈)
さらにめんどくさいので、libgdの関連付けを切ってconfigureします。
同様にMakefileにパスの設定を書き込み、ついでにFLAGSとLDFLAGSの設定も書き換えてmakeします。
gcc「gd.hが無いよ!!」
俺「は!?configureでlibgdのサポートは切ったつもりだったが…」
しかし、よく見るとこれはnpiet-foogolに対して吐かれたエラーであり、npiet.exeはできていました。
そこでこのままmake installを実行してみます。
$ make install
/bin/install -c npiet /c/myprograms/npiet-build/bin/npiet-1.3b/bin
/bin/install: cannot create regular file `/c/myprograms/npiet-build/bin/npiet-1.
3b/bin.exe': No such file or directory
make: *** [install] Error 1
でも大丈夫!このフォルダにnpiet.exeはあるので、きちんと起動してPietのプログラムを実行できます! libgdを切った結果、トレース画像を生成できなくなったみたいですが、
普通に実行したりテキストでトレースを出力したりする分には問題ないようです。
さらに、パスの区切りに円マークを使用しても、もちろん謎の警告は出力されない!快適!!
Dependency Walkerで確認しても、KERNEL32.DLLとMSVCRT.DLL以外のDLLは(直接は)要求していませんでした。 まとめ
Windowsでソースコードのパスに円マークを含めても謎の警告が出ないnpietを簡単に作るには
- npietのソースコードをダウンロードし、解凍する
npiet - an interpreter and editor for the piet programming language - zlib、libpng、giflibをダウンロードして解凍、ビルド、installする
zlib Home Site
libpng Home Page
GIFLIB - Browse Files at SourceForge.net - 2でinstallしたディレクトリを指定するコンパイルオプションを適切な環境変数に設定し、npietをconfigureする
- 生成されたMakefileをテキストエディタで開き、CCの行に1でinstallしたディレクトリを指定するコンパイルオプションを書き加える
※下の方にあるFLAGSにヘッダファイルのあるディレクトリを指定するオプションを、
LDFLAGSにライブラリのあるディレクトリを指定するオプションを書き加えてもよさそう - makeを実行する。エラーが出ても、運がよければインタプリタ本体であるnpiet.exeが生成されている