2018/03/13(火) [n年前の日記]
#1 [ruby][mruby] mrubyにRandomは用意されてた
mrubyを何度かビルドしているうちに、ふと、mruby-random という文字列が目に入って。
調べてみたら、mruby 1.4.0 は、Randomが含まれていたのですな…。mrbgem で別途導入しなくても良かったのか…。知らなかった…。とメモ。
調べてみたら、mruby 1.4.0 は、Randomが含まれていたのですな…。mrbgem で別途導入しなくても良かったのか…。知らなかった…。とメモ。
[ ツッコむ ]
#2 [windows][mruby] MSYS2でSDL2関係をビルドしたりmrubyをビルドしたり
先日、Windows10 x64 + MSYS2 で mruby をビルドした際は、エラーが出てしまってビルドできなかったのだけど。
ふと、github から最新版の mruby を clone して試していたのがマズかったのではないかと思えてきたわけで。
試しに _mruby 1.4.0 の zip をDLしてビルドしてみたところ、最後までビルドが通った。とメモ。
せっかくだから、SDL2関係も MSYS2 上でビルドできるか実験。
ふと、github から最新版の mruby を clone して試していたのがマズかったのではないかと思えてきたわけで。
試しに _mruby 1.4.0 の zip をDLしてビルドしてみたところ、最後までビルドが通った。とメモ。
せっかくだから、SDL2関係も MSYS2 上でビルドできるか実験。
◎ SDL2関係をビルドするために必要なファイルをインストール。 :
以下のページを参考にして作業。
_MSYS2/MinGW-w64 (64bit/32bit) インストール手順 メモ
ところで、どうもよく分からんのだけど…。スタートメニュー内にある、以下のショートカット…。
それはそれとして。SDL2関係のパッケージをインストールできたら、sdl2-config でバージョンを確認することができるはず。
コンパイラやリンカに渡すオプションも確認できる。
_MSYS2/MinGW-w64 (64bit/32bit) インストール手順 メモ
- スタートメニューから、MSYS2 MinGW 32bit (32bit)、を起動。
- pacman -Syuu で、インストール済みのパッケージを最新版に更新。
- pacman -S base-devel で、おそらくは開発に必要になりそうなツール群をインストール。
- pacman -S mingw-w64-i686-toolchain で、コンパイラその他をインストール。ada や fortran や objc はインストールしなくていいと思うので、「1 2 3 7 9 10 11 12 13 14 15 16 17」みたいな感じで番号を打ち込んでインストールすることになるかと。
- pacman -Ss SDL2 i686 で、SDL2関係のパッケージ一覧を表示。
- pacman -S パッケージ名、で、SDL2関係のパッケージをインストール。
ところで、どうもよく分からんのだけど…。スタートメニュー内にある、以下のショートカット…。
- 「MSYS2 MinGW 32bit (32bit)」
- 「MSYS2 MinGW 64bit (32bit)」
- 「MSYS2 MinGW 32bit (64bit)」
- 「MSYS2 MinGW 64bit (64bit)」
それはそれとして。SDL2関係のパッケージをインストールできたら、sdl2-config でバージョンを確認することができるはず。
$ sdl2-config --version 2.0.8
コンパイラやリンカに渡すオプションも確認できる。
$ sdl2-config --cflags -I/mingw32/include/SDL2 -Dmain=SDL_main $ sdl2-config --libs -L/mingw32/lib -lmingw32 -lSDL2main -lSDL2 -mwindows
◎ SDL2を使ったCソースをビルドしてみる。 :
以下を参考にして、test.c を作成。今回は、~/prg/sdl2/ 以下に、 test.c を作成した。
_Installing SDL for MinGW
コンパイルする。
MSYS2 を使う際に立ち上がる mintty 上から test.exe を実行しても何も出てこないけど、DOS窓を開いて、そこから test.exe を実行したら、ウインドウが開いて、3秒後にウインドウが閉じられた。どうやらビルドできたっぽい。
更に、以下も参考にして、ビルドできるかどうかテスト。
_MSYS2 + MinGW 環境に SDL2 をインストール - takaya030の備忘録
/mingw64 を /mingw32 に変更した Makefile を作成してから make と打ってみたけれど。「/bin/sh が無いよ」と怒られる…。何故…。which sh をしたら、/usr/bin/sh が出てきた。/bin/sh じゃないんか…。
とりあえず、MSYS2 上ならいきなり sdl2-config と打っても動作するので、Makefile 内の 「/bin/sh sdl2-config」の記述は「sdl2-config」にしてみた。この状態ならビルドも通ったし、DOS窓上で実行したらウインドウも表示された。
しかし、mintty 上から実行しようとすると、何も表示されないのは何故なんだろう…。
_Installing SDL for MinGW
#include "SDL2/SDL.h" #include <stdio.h> int main( int argc, char* args[] ) { SDL_Window *window; SDL_Init(SDL_INIT_VIDEO); window = SDL_CreateWindow("SDL2 Window", 100, 100, 640, 480, 0); if(window==NULL) { printf("Could not create window: %s\n", SDL_GetError()); return 1; } SDL_Delay(3000); SDL_DestroyWindow(window); SDL_Quit(); return 0; }
コンパイルする。
g++ -o test.exe test.c -lmingw32 -lSDL2main -lSDL2test.exe ができた。
MSYS2 を使う際に立ち上がる mintty 上から test.exe を実行しても何も出てこないけど、DOS窓を開いて、そこから test.exe を実行したら、ウインドウが開いて、3秒後にウインドウが閉じられた。どうやらビルドできたっぽい。
更に、以下も参考にして、ビルドできるかどうかテスト。
_MSYS2 + MinGW 環境に SDL2 をインストール - takaya030の備忘録
/mingw64 を /mingw32 に変更した Makefile を作成してから make と打ってみたけれど。「/bin/sh が無いよ」と怒られる…。何故…。which sh をしたら、/usr/bin/sh が出てきた。/bin/sh じゃないんか…。
とりあえず、MSYS2 上ならいきなり sdl2-config と打っても動作するので、Makefile 内の 「/bin/sh sdl2-config」の記述は「sdl2-config」にしてみた。この状態ならビルドも通ったし、DOS窓上で実行したらウインドウも表示された。
しかし、mintty 上から実行しようとすると、何も表示されないのは何故なんだろう…。
[ ツッコむ ]
#3 [ruby][mruby] 他のmruby-sdl2をビルドしようと試していたり
github で「mruby sdl2」で検索したら、色んな人が mruby + sdl2 を試しているようで。他の mruby-sdl2 ならビルドできるのかなと試したり。
_mruby-sdl2/mruby-sdl2
上記の mrgbgem を追加して、mruby をビルドしてみたり。
MSYS2上ですんなりビルドできたけど、出来上がった mruby , mirb は、メッセージが出力されなかった…。そして、この mruby-sdl2 を外してビルドすると、やはり、メッセージがちゃんと出力される版になる…。何故なんだ。
もしかして、mruby で SDL2 を使えるようにすると、メッセージ出力が必ずできなくなってしまう、そんな仕様だったりするのだろうか。分からんなあ…。
_mruby-sdl2/mruby-sdl2
上記の mrgbgem を追加して、mruby をビルドしてみたり。
MSYS2上ですんなりビルドできたけど、出来上がった mruby , mirb は、メッセージが出力されなかった…。そして、この mruby-sdl2 を外してビルドすると、やはり、メッセージがちゃんと出力される版になる…。何故なんだ。
もしかして、mruby で SDL2 を使えるようにすると、メッセージ出力が必ずできなくなってしまう、そんな仕様だったりするのだろうか。分からんなあ…。
◎ Ubuntu Linux 16.04上で試してみた。 :
VMware + Ubuntu 16.04 LTS 上で、SDL2関係をインストールした上で、mruby + mruby-sdl2 をビルドできるか試してみたり。
サンプルスクリプト群がすんなり動いてしまった…。ウインドウが表示されて、何か画面に出てる…。更に、mruby も mirb も、メッセージ出力ができている…。
つまり、Windows + mruby + SDL2 だと、妙な状態になる模様。何故。
サンプルスクリプト群がすんなり動いてしまった…。ウインドウが表示されて、何か画面に出てる…。更に、mruby も mirb も、メッセージ出力ができている…。
つまり、Windows + mruby + SDL2 だと、妙な状態になる模様。何故。
[ ツッコむ ]
#4 [ruby][mruby] love2dのRuby版を作ろうとしてる方はいるらしい
以下のプロジェクトが気になった。
_jfcalvo/yoko: Yoko is a small framework to make games with ruby (mruby).
「love2dのRuby版を志向してる」と書いてあるように見える。同じことを既に考えて、しかも夢想で終わらせずに行動を起こした方が居たのだな…。素晴らしい。
ただ、導入方法に関しては、Mac と *NIX にしか触れてないようで。たぶんコレ、Windowsでは動かないな…。Rubyコミュニティの「OSは*NIXに収束した」という認識が、こんなところにまで…ということかしら。
一応、MSYS2上で、
他に、以下のようなプロジェクトもあるようで。
_elct9620/hiro: The game framework based on mruby.
これも、「Windows (Coming soon)」となってる…。
ちなみに、love2d は、Windows、Mac、Linux、Andorid、iOS でも動くので…。その点にのみ着目しても、
「Ruby (mruby) は Lua より劣っている」
「なぜなら、Lua はOSを問わずに動くけれど、Ruby (mruby) は *NIX上でしかまともに使えないから」
と言い切ってしまってもいいのではないかと思えてきちゃったりなんかしちゃったりもして(広川太一郎風に)。 *2
_jfcalvo/yoko: Yoko is a small framework to make games with ruby (mruby).
「love2dのRuby版を志向してる」と書いてあるように見える。同じことを既に考えて、しかも夢想で終わらせずに行動を起こした方が居たのだな…。素晴らしい。
ただ、導入方法に関しては、Mac と *NIX にしか触れてないようで。たぶんコレ、Windowsでは動かないな…。Rubyコミュニティの「OSは*NIXに収束した」という認識が、こんなところにまで…ということかしら。
一応、MSYS2上で、
git clone https://github.com/jfcalvo/yoko.git cd yoko makeをしてみたけれど、予想通りエラーが出て最後までビルドできなかった。やはり Windows は非対応らしい。 *1
他に、以下のようなプロジェクトもあるようで。
_elct9620/hiro: The game framework based on mruby.
これも、「Windows (Coming soon)」となってる…。
ちなみに、love2d は、Windows、Mac、Linux、Andorid、iOS でも動くので…。その点にのみ着目しても、
「Ruby (mruby) は Lua より劣っている」
「なぜなら、Lua はOSを問わずに動くけれど、Ruby (mruby) は *NIX上でしかまともに使えないから」
と言い切ってしまってもいいのではないかと思えてきちゃったりなんかしちゃったりもして(広川太一郎風に)。 *2
[ ツッコむ ]
#5 [nitijyou] 某所に行ってきた
Excelのトラブル相談を受けて某所まで。詳細はGRPでメモ。
[ ツッコむ ]
以上、1 日分です。