[C++]109 FLTK : 静的ライブラリのリンク

[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]

配布したアプリの導入時にユーザーの方がHomebrewからFLTKをインストールするなどの作業をしなくても済む様、静的ライブラリとリンクさせました。

自製ライブラリも動的ライブラリから静的ライブラリに変更しています。静的ライブラリはビルド時にアプリ内に取り込まれます。

手順

1.コンパイルコマンドをチェックし、最低限必要なライブラリだけに絞り込む。

2.各ライブラリの静的ライブラリ(拡張子 a)を作成する。

# オブジェクトファイルを作成
clang++ -std=c++17 -I/code/cpp/mylib/include -g -o /code/cpp/mylib/lib/Split.o \
-c /code/cpp/mylib/src/Split.cpp

# 静的ライブラリを作成
ar r /code/cpp/mylib/lib/Split.a /code/cpp/mylib/lib/Split.o

3.Makefileでアプリをビルドする。

動的ライブラリの時は612KBだったアプリサイズが1.8MBになりました。単純な合計サイズより小さいのは、必要なクラスや関数だけ取り出しているためでしょう。

なおJava版は45.6MBになりますから、C++版の方がストレージへの負担はかなり小さくそして爆速です。起動が速すぎてちょっとビックリするレベルなので、可能なら少し遅めにしようかとも思っています。

[C++]108 FLTK : 表示色カウンターと履歴消去機能追加 

[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]

表示色が履歴の何番目かを示したカウンターと履歴消去機能を追加しました。カウンターのFl_Inputを右揃えにできず、やむなく左揃えで妥協しました。

これで搭載したい機能は全て実装完了です。後は配布に耐えうる堅牢性への強化でしょうか。

// counter
counter = new Fl_Input(625, 89, 27, 10,"");
counter->box(FL_FLAT_BOX);
counter->align(FL_ALIGN_INSIDE|FL_ALIGN_RIGHT); // 設定は効かず
counter->color(fl_rgb_color(238,238,238));
counter->textsize(10);

// 色表示関数内
string count = to_string(color_index) + "/" + to_string(selectColorList.size());
counter->value("");
counter->value(count.c_str());