大昔にFLTKをBorland C++ 5.5.1で使っているときがありました。当時のFLTKは、C++ Builder 5.0あたりはとりあえず対応されていたようですが、敢えてFreeバージョンのBorland C++ 5.5.1で無理やり使っていました。
今回は最新版ソースfltk-1.4.4をBorland C++ 5.5.1で構築できるか試してみました。#自分の忘備録12
Borland C++ 5.5.1はBorlandサイト~今のEmbarcaderoサイトからはもう入手することは出来ません。Borland C++ 5.5.1がBorlandサイトからダウンロード出来ていた頃のファイル名はfreecommandLinetools.exeでしたが、それを検索してどこかのダウンロードサイトからは入手出来そうです(ファイルハッシュが SHA256:433b44741f07f2ad673eb936511d498c5a6b7f260f98c4d9a6da70c41a56d855 です)。
現在EmbarcaderoサイトからはFreeバージョンのEmbarcadero C++がダウンロードできます。
Embarcadero C++は「Installing and Using the Embarcadero C++ 10.2 Tokyo Command-line Compiler.txt(以後txtファイル)」にCmakeがサポートされていることが書いてありました。txtファイルには10.2とありますが、どうもC++ Builderがベースになっているように思われます。Embarcadero C++が実際に出力するバージョンは7.30となっています。
FLTK構築(Borland C++
)
Embarcadero C++のtxtファイルに書いてあったCmakeサポートを参考にしてFLTKを構築します。Embarcadero C++のコンパイラファイル名はbcc32c.exeですが、Borland C++ 5.5.1のコンパイラファイル名はbcc32.exeなので、そこだけ置き換えます。
Borland C++ 5.5.1とEmbarcadero C++はコンパイル以外のファイルで同じようなファイル名のものが含まれているので、ファイルパスはBorland C++ 5.5.1だけに通るようにしておきます。
Download - Fast Light Toolkit から最新版ソース fltk-1.4.4-source.tar.gz をダウンロードします。FLTKソースを解凍したディレクトリ名は変更して進めます(ソースの修正がどうなるかわからないので)。
(構築)
fltk-1.4.4-source.tar.gzを解凍する
move <解凍したディレクトリ>\fltk-1.4.4 fltk-1.4.4-bcc55
cd fltk-1.4.4-bcc55
cmake -G"Borland Makefiles" -DCMAKE_CXX_COMPILER="bcc32.exe" -DCMAKE_C_COMPILER="bcc32.exe" -DCMAKE_VERBOSE_MAKEFILE=1 -S . -B build
- コンパイラBinディレクトリにあるbcc32.cfgを正しく設定しておく必要がある(-I/-Lのデフォルトパスなど、設定しておかないとテストコンパイルでエラーになる)
(構築続き)
cmake --build build
- Borland C++ 5.5.1にはstdint.hが存在しない(とりあえずEmbarcadero C++のをコピー)
- strcasecmpはstricmpに置き換えなど、Borland系の"case"は"i"にする
- _strdupはstrdup、_timebはtimeb、ftimeはftimeにそれぞれ置き換え、Borland系は""(アンダースコアー)が無いのが多い
- Warning W8057(Parameter *** is never used in function ***)が大量に出力されて停止してしまうのを対応
- その他、もろもろ・・・
ソースによって修正が難しいエラーが多い・・・Borland C++ 5.5.1は流石に古過ぎるのかな・・・なので残念ながら断念しました![]()
改めてFLTK構築(Embarcadero C++
)
Borland C++ 5.5.1では難しくても、Embarcadero C++なら世代がかなり新しいし、txtファイルにCmakeサポートも書かれているので上手く行く可能性はあるかと思い試しました。
やり方はほぼ同じ。Embarcadero C++にファイルパスが通るようにして実行します。やはりFLTKソースを解凍したディレクトリ名は変更して進めます(ソースの修正がどうなるかわからないので)。
(構築)
fltk-1.4.4-source.tar.gzを解凍する
move <解凍したディレクトリ>\fltk-1.4.4 fltk-1.4.4-bcc102
cd fltk-1.4.4-bcc102
cmake -G"Borland Makefiles" -DCMAKE_CXX_COMPILER="bcc32c.exe" -DCMAKE_C_COMPILER="bcc32c.exe" -DCMAKE_VERBOSE_MAKEFILE=1 -S . -B build
- Embarcadero C++はbcc32c.cfgも設定されていたので、コンフィグは難なく終了
(構築続き)
cmake --build build
- strcasecmpはstricmpに置き換え、Borland系の"case"は"i"にする
- _strdupはstrdup、_timebはtimeb、ftimeはftimeに置き換え、Borland系は""(アンダースコアー)が無いのが多い
- float系のacosf,fabsf,fmodf,floorfはmath.hの定義ではうまく行かなかったので、doubleのacos,fabs,fmod,floorを呼び出すinline関数を追加(さらにfloorfは何故かmath.hと競合したので、math.hを修正)
- roundも存在しないようでdefineで追加(同様なことを行っているソースもあったので真似た)
- ライブラリ作成のrspファイルobjects1.rspのパスの区切りを"/"から""に置き換える
その他、インクルードファイルの競合などを修正しましたが、難解なエラーになることはなく、構築が最後まで完了しました。
testディレクトリ以外で作成されたファイルは以下の通り(VS2026と同じファイルが作成されたのでOKかと)。
build\lib\
fltkd.lib
fltk_gld.lib
fltk_jpegd.lib
fltk_zd.lib
fltk_pngd.lib
fltk_imagesd.lib
fltk_formsd.lib
build\bin\
fltk-options-cmd.exe
fltk-options.exe
fluid-cmd.exe
fluid.exe
簡単なFLTKアプリで動作確認(Embarcadero C++)
ここ(簡単なFLTKアプリを作る)で作成した「PNGファイルを読み込んで単に表示するだけのプログラム」のflファイルを使用して動作確認をします。
flファイルtest-fltk.flをEmbarcadero C++で作成したfluid(build\bin\fluid.exe)を使用して読み込んで、GUIのソースコードtest-fltk.cxx/test-fltk.hを出力して構築します。
CMakeLists.txtのFLTK_DIRはパスfltk-1.4.4-bcc102/buildをsetします。
(構築)
cd test-fltk-bcc102 ← test-fltk.cxx/test-fltk.hとCMakeLists.txtを置いたディレクトリ
cmake -G"Borland Makefiles" -DCMAKE_CXX_COMPILER="bcc32c.exe" -DCMAKE_C_COMPILER="bcc32c.exe" -DCMAKE_VERBOSE_MAKEFILE=1 -S . -B build
cmake --build build
出来上がったbuild\test-fltk.exeを実行して、File > Openメニューからファイル選択ダイアログ開くと、FLTK特有のファイルダイアログが開きます。
オリオン座のPNG画像(orion.png)を開くと以下のように表示されました。

