パソコンでプログラミングしよう ウィンドウズC++プログラミング環境の構築
1.6.3.6(15)
サイトバージョン1.2.X.X

サイトバージョン1.2.X.Xの導入ソフトウェアバージョンを示し、サイト記述の変更をまとめる。

導入ソフトウェアバージョン

2021年01月27日確認。

導入 ソフトウェア バージョン ステータス
MSYS2 MSYS2ランタイム 3.1.7-4 更新
mingw-w64コンパイラ(32ビット) 10.2.0-6 更新
mingw-w64コンパイラ(64ビット) 10.2.0-6 更新
boostライブラリ 1.75.0-2 更新
wxWidgetsライブラリ 3.0.5.1-1 -
Doxygen 1.9.1-2 更新
Graphviz 2.44.1-3 更新
GIMP 2.10.22-2 更新
インストーラ Code::Blocks 20.03 -
Git for Windows 2.30.0.2-64-bit 更新
Sourcetree 3.4.2 更新
Poedit 2.4.2 更新
HTML Help Workshop 1.3(4.74.8702.0) -
Inno Setup 6.1.2 更新
自作ツール KGetText 2.0.1.3 -
KUdCheck 2.2.1.3 -
KAutoVer 2.2.1.1 -
KGitWVer 2.1.0.1 -

サイト記述の変更

MSYS2

サイト記述は変更しないが多くのエラーを経験したためここに記録する。

pacman -Syuuの1回目を試みるがPGP鍵が取得できない。パッケージ担当の交代が理由。

user@THINKPAD-L430 MSYS ~
$ pacman -Syuu
...
エラー: mingw32 の更新に失敗しました (無効または破損したデータベース (PGP 鍵))
...

リンクを頼りに以下を行ったがpacman -U ...でエラーとなる。

user@THINKPAD-L430 MSYS ~
$ curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
...
user@THINKPAD-L430 MSYS ~
$ curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
...
user@THINKPAD-L430 MSYS ~
$ pacman-key --verify msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig
...
user@THINKPAD-L430 MSYS ~
$ pacman -U msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
...
エラー: mingw32: キー "4A6129F4E4B84AE46ED7F635628F528CF3053E04" は不明です
...

リンクを頼りにエラー対策してpacman -U ...を再実行。

user@THINKPAD-L430 MSYS ~
$ pacman -U --config <(echo) msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
...
user@THINKPAD-L430 MSYS ~
$ pacman -U msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz
...

pacman -Syuuの1回目を実行、終了時にプロンプトでターミナルを閉じるようになっていた。

user@THINKPAD-L430 MSYS ~
$ pacman -Syuu
...
:: To complete this update all MSYS2 processes including this terminal will be closed. Confirm to proceed [Y/n]

ターミナル再起動してpacman -Syuuの2回目を実行。実行前後に大量にエラー表示されるものの正常終了。ただし以降もコマンド実行の度にエラー表示する。

1 [main] bash (17488) shared_info::initialize: size of shared memory region changed from 49080 to 51128
...
user@THINKPAD-L430 MSYS ~
$ pacman -Syuu
1 [main] bash (17488) shared_info::initialize: size of shared memory region changed from 49080 to 51128
...

表示されるエラーは何らかの古いMSYS2プロセスが起動状態で残っていたため。ウィンドウズのタスクマネージャでは確認できなかったが、ウィンドウズ再起動で解決した。

wxWidgetsライブラリ/MSYS2

wxWidgetsライブラリの更新は行われていないが、デスクトップアプリケーション動作確認などに必要とするスタティックライブラリが追加された。何らかのMSYS2供給ライブラリの依存関係が変更されたものと推測する。

wxWidgets MSYS2 動作確認に必要なスタティックライブラリ
3.0.5.1-1 3.1.4-1 libwx_mswu_core-3.0.a, libwx_baseu-3.0.a, libtiff.a, libwxjpeg-3.0.a, libwxpng-3.0.a, libz.a, libzstd.a, liblzma.a
3.1.7-4 libwx_mswu_core-3.0.a, libwx_baseu-3.0.a, libtiff.a, libwxjpeg-3.0.a, libwxpng-3.0.a, libz.a, libzstd.a, liblzma.a, libwebp.a, libdeflate.a
覚え書き
1.2.0.Xはlibwxjpeg-3.0.aをlibjpeg.aとしていた。どちらもコンパイルリンクは通るが、libjpeg.aは実行時にwxImageがjpegファイルをロードするとセグメンテーション違反でアプリケーションが落ちる。1.1.X.Xまでもそうであった可能性が強いが今となっては確認できない。wxWidgetsは以下のライブラリファイルをバンドルしてMSYS2の同等ライブラリと重複する。
ライブラリ wxWidgetsバンドル MSYS2 備考
xmlパーサー libwxexpat-3.0.a libexpat.a
jpegイメージ libwxjpeg-3.0.a libjpeg.a
pngイメージ libwxpng-3.0.a libpng.a
正規表現 libwxregexu-3.0.a libregex.a
Scintillaコンポーネント libwxscintilla-3.0.a (libscintilla.a) 本サイトMSYS2は導入しない
tiffイメージ libwxtiff-3.0.a libtiff.a
zlib圧縮伸張 libwxzlib-3.0.a libz.a
本サイトはこれらをMSYS2によらない配布形態への対応と考え、完全互換を仮定してMSYS2ライブラリ利用を基本としてきた。今回その反証を経験したわけで、1.1.X.Xのlibwxpng-3.0.aへの変更も含め今後の調査を必要とする。1.2.1.Xからlibjpeg.aをlibwxjpeg-3.0.aへ修正する。

これに伴い以下を変更した。

Doxygen

ALIASESオプションに物理改行を記述する際のバグが解消した。マニュアル通り^^が使えるようになり代用の\_linebrが使えなくなった。なお^^は改行コードの後にスペース1文字を追加する。

ALIASES += "head_inserter=\htmlonly \_linebr<!-- head inserter" \
"endhead_inserter=head inserter --> \_linebr\endhtmlonly"
ALIASES += "head_inserter=\htmlonly ^^<!-- head inserter" \
"endhead_inserter=head inserter --> ^^\endhtmlonly"

これに伴い以下を変更した。

Git fo Windows

インストール時のオプション設定にいくつか追加されていたがデフォルトのままとした。サイト記述は変更していない。

ドキュメント

参考ドキュメントの導入統合開発環境のカスタマイズ(2)で以下を変更した。コンパイラのGCCドキュメントも変更した。用語C++にC++23を追加した。

  • C++23ドラフト(JTC1_SC22_WG21 N4878)を追加した。
  • GCCドキュメントを10.2に変更した。
  • boostドキュメントを1.75.0に変更した。
  • Doxygenドキュメントを1.9.1に変更した。