mieki256's diary



2018/03/10() [n年前の日記]

#1 [windows] FLTKをVisual Studio 2015でビルド

FLTKなるGUIライブラリがあるらしい。

_Fast Light Toolkit - Fast Light Toolkit (FLTK)
_Download - Fast Light Toolkit (FLTK)

mrubyでGUI表示をする際に使われていたりするようで。

_RyanScottLewis/mruby-fltk: FLTK 1.3.2 GUI binding, built for MRuby 1.0.0.
_Big Sky :: mruby で GUI!もう組み込み用途とは言わせない!mruby-fltk3 書いた。
_mattn/mruby-fltk3

興味が湧いたので、Windows10 x64 + Visual Studio 2015 Community でビルドできるか実験。以下のページを参考にしながら作業してみた。

_How to install and use fltk-1.3.4 in Visual Studio 2017 2.0 [complete guide] - preventing cross-contamination - bumpy road to code
_How to install and use fltk-1.3.4 in Visual Studio 2017 [complete guide] - bumpy road to code

ビルドできるか試す。 :

以前は FLTK3 なるバージョンがあったらしいけど。公式サイトでは「FLTK3 は開発停止じゃよ」と書いてあった。ひとまず FLTK 1.3.4-2 をビルドできるか試してみる。

_Download - Fast Light Toolkit (FLTK)

fltk-1.3.4-2-source.tar.gz をDL。解凍。今回は D:\Dev\fltk\ に、fltk-1.3.4-2 フォルダを置いてみた。

fltk-1.3.4-2\ide\VisualC2010\fltk.sln を、VSS2015 で開く。「これは VS2010用だからVS2015用に更新するよ」的ダイアログが表示された。OKをクリック。

右上の「ソリューションエクスプローラー」の中の、demo を右クリックして、スタートアッププロジェクトに設定、を選択。

ビルド → ソリューションのビルド、を選択。ビルドが始まる。

ビルドに成功すると、「ビルド: 79 正常終了」とメッセージ欄に表示される。

上のほうで「ローカルWindowsデバッガー」が表示されてる状態で、F5キーを叩いて実行してみる。

DOS窓が一つと、ウインドウが表示された。ウインドウ上のボタンを押すと、FLTKのウィジェットが色々見られる。Exitボタンを押して一旦終了。どうやらビルドはできたらしい。

上のほうの「Debug」を「Release」に変更。ビルド → ソリューションのリビルド。F5キーで実行。

今度はリリース版としてビルドしたので、DOS窓は無しでウインドウだけ表示された。

ライブラリの追加方法。 :

ビルドができることは分かったけど、他のアレコレで、FLTK を使う方法がよく分からない。Visual Studio のインストールフォルダ内に、FL、libフォルダ等をコピーしちゃう手もあるらしいけど…。

とりあえず、Vsiaul Studio 上でプロジェクトを作成して作業する分には、プロパティで追加ライブラリを指定することができるっぽい。

例えば、ファイル → 新規作成 → プロジェクト → テンプレートの中の、Visual C++ → Win32 → Win32コンソールアプリケーション、を選んで、空のプロジェクト、にチェックを入れてプロジェクトを作成。

ソリューションエクスプローラー → ソースファイルを右クリック → 追加 → 新しい項目 → C++ファイル(.cpp) を選んで、fltktest.cpp を作成。以下を記述。
#include <FL/Fl.h>
#include <FL/Fl_Box.h>
#include <FL/Fl_Window.h>
int main()
{
       Fl_Window window(200, 200, "Window title");
       Fl_Box box(0, 0, 200, 200, "Hey, I mean, Hello, World!");
       window.show();
       return Fl::run();
}

プロジェクト → 一番下の、〜のプロパティを選択。

構成を「Debug」に。リンカー → 入力 → 追加の依存ファイル → 右側の下向き三角ボタンを押して「編集」 → 以下を追加。
fltkd.lib
wsock32.lib
comctl32.lib
fltkjpegd.lib
fltkimagesd.lib

構成を「すべての構成」に。VC++ディレクトリ → ライブラリディレクトリ → D:\Dev\fltk\fltk-1.3.4-2\lib を追加。

C/C++ → 全般 → 追加のインクルードディレクトリ → D:\Dev\fltk\fltk-1.3.4-2 を追加。

この状態でビルドすれば、ウインドウとメッセージが表示される。

リリース版でビルドしたい時は、プロジェクト → 〜のプロパティ。構成を「Release」に。リンカー → 入力 → 追加の依存ファイル。以下(Debugと違って、最後に「d」がついてないファイル名)を追加。
fltk.lib
wsock32.lib
comctl32.lib
fltkjpeg.lib
fltkimages.lib

リンカー → システム → サブシステム → Windows (/SUBSYSTEM:WINDOWS) に変更。

これで、上のほうの「Debug」を「Release」に変更してF5キーを押せば、ビルドし直してリリース版が動く。

つまり、追加ライブラリの場所を適切に指定できればビルドはできるようになるはず。

だけど。必ずしも Visual Studio を起動してビルドするとは限らないわけで。

以下を参考にして、Visual Studio 2015 のインストールフォルダ内にコピーするしかないのだろうか。

_Installing FLTK with Visual Studio
  • D:\Dev\fltk\fltk-1.3.4-2\FL フォルダを、C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include 内にコピー。
  • D:\Dev\fltk\fltk-1.3.4-2\lib\*.lib等を、C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib 内にコピー。
  • D:\Dev\fltk\fltk-1.3.4-2\fluid\*.exe を、C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin 内にコピー。
コレで合ってるのかな…。

FLTK3の入手方法が分からない。 :

さておき、mruby-fltk3 とやらを使ってみたくて FLTK3 を入手しようと思ったのだけど、入手方法が分からない。公式サイトのリンクをクリックすると、ユーザ名とパスワードを要求される…。

一応 MSYS2 上で Subversion をインストールして、
svn co http://seriss.com/public/fltk/fltk/branches/branch-3.0/ fltk-3.0
と打ってみたけど、こちらもユーザ名やパスワードを要求されるし、何かがDLできたものの、中に必要なファイルが入ってるようには見えない。

やはり FLTK3 は開発中止になったと捉えるべきなのだろうか。

#2 [ruby][mruby] mrubyのmrbgemを試す

mruby に機能を追加していく時は、mrbgem なるものを使うらしい。build_config.rb を編集して、追加したいアレコレを記述してビルドし直して、追加機能入りの mruby を作る…のだとか。

実際試してみないと感じが掴めないなと。試してみたり。

mruby-jsonを追加。 :

JSONのパースができるライブラリがあるらしいので追加してみた。

_mattn/mruby-json

"mrubyのファイル一式を置いてある場所"\build_config.rb を編集。

  # Use mrbgems
と書かれたあたりのところに、以下の行を追加。
  conf.gem :github => 'mattn/mruby-json'

mruby をビルドし直し。自分の環境は、Windows10 x64 + Visual Studio 2015 Community なので、スタートメニューから、Visual Studio 2015 → 開発者コマンドプロンプト for 2015 を起動。cd hoge で目的のディレクトリに移動してから、以下。
ruby ./minirake

出来上がった .exe は、少しファイルサイズが増えた。

mirb を起動して動作確認。
> mirb
mirb - Embeddable Interactive Ruby Shell
> jsontext = '{"x":100, "y":200, "names":["hoge", "fuga", "piyo"]}'
=> "{\"x\":100, \"y\":200, \"names\":[\"hoge\", \"fuga\", \"piyo\"]}"
> hash = JSON::parse(jsontext)
=> {"x"=>100, "y"=>200, "names"=>["hoge", "fuga", "piyo"]}
> hash["x"]
=> 100
> hash["y"]
=> 200
> hash["names"].each {|s| puts s}
hoge
fuga
piyo
=> ["hoge", "fuga", "piyo"]
> exit

機能として追加されたっぽい。なるほど、こういう感じで使うのか…な。

mruby-randomは追加できなかった。 :

疑似乱数が得られる、Random というクラスもあるらしいので追加しようとしたけれど…。エラーが出る…。

_matsumotory/mruby-random: mruby-random

build_config.rb を編集。以下を追加。
conf.gem :git => 'https://github.com/matsumoto-r/mruby-random.git'

ビルド。
ruby ./minirake

エラーが出る…。
rake aborted!
Don't know how to rake D:/Ruby/mruby/mruby/build/host/mrbgems/mruby-random/src/mrb_random.obj

どういう意味のエラーメッセージだろう…。

mruby-tinymtを追加。 :

疑似乱数に関しては、mruby-TinyMT という版もあるらしい。Ruby で使われてる Random、というか _Mersenne twister に、何か制限を加えて軽くした版、とかなんとか。

_matsumotory/mruby-tinymt: rand() and srand() method with TinyMT
_Tiny Mersenne Twister (TinyMT)

build_config.rb を編集。以下を追加。
  conf.gem :git => 'https://github.com/matsumoto-r/mruby-tinymt.git'

ruby ./minirake

こちらはビルドが通った。

> mirb
mirb - Embeddable Interactive Ruby Shell
> tmt = TinyMT.new(0xf50a1d49, 0xffa8ffeb, 0x0bf2bfff)
=> #<TinyMT:0xd28ad0 tinymt32_ctx=#<Object:0xd28ab0>>
> tmt.srand(5)
=> nil
> tmt.rand()
=> 0.061755396425724
> tmt.rand()
=> 0.47946119308472
> tmt.rand(6)
=> 5
> tmt.rand(6)
=> 5
> tmt.rand(6)
=> 3
> tmt.rand(6)
=> 1
> tmt.rand(6)
=> 5
> exit

動いてるっぽい。

その他のライブラリ。 :

以下でその他のライブラリが紹介されてるのでメモ。

_mruby - libraries

以上、1 日分です。

過去ログ表示

Prev - 2018/03 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project