MacにwxWidgetsのWin32, Win64クロスコンパイル開発環境構築しました。

2018年3月10日修正

Windowsのアプリケーション開発の度に仮想環境を起動するのを煩わしく感じていたので、MacOSXでのwin32クロスコンパイル開発環境を構築すべく、ここのところC++フレームワークwxWidgetsに取り組んでいました。

最近、ようやく何とかWindowsのwin32クロスコンパイル開発環境を構築しましたのでmacOS向けコンパイルと合わせて、ご紹介します。

後、最新のXcodeがYosemiteにインストールできなくなったので、El Capitanへアップデートもしました。案の定、移行したEl Capitanでの問題がありました。(ー ー;)ちなみに2018年1月17日時点では、macOS Sierra 10.12へアップデートしています。

まずはクロスコンパイラの入手先です。

MacPortsをインストールして、ターミナルコマンドportで、クロスコンパイラmingw-w64をダウンロードして最新版をインストールします。

MinGw-w64ソースコードダウンロードURL

ターミナル操作

$ sudo port install mingw-w64

インストール後の実行画面

インストールした/opt/local/binフォルダへのパスを.bash_profileに追加します。

expert PATH=/opt/local/bin:$PATH

コンパイラは、i686-w64-mingw32-gccが32bit版で、x86_64-w64-mingw32-gccが64bit版です。

今回、構築するC++フレームワークwxWidgetsは、安定版3.0.4です。

wxWidgets安定版3.0.4のフォルダ構成とwin32bitのconfigure成功画面

    

wxWidgets-3.0.4フォルダ下にbuild_win32_i686、build_win64、build_macosフォルダを作成したらターミナルモードで、build_win32_i686へ移動して、ターミナルでconfigure設定の以下を入力してリターンします。64bitのWin64の場合は、build_win64へ移動し、x86_64を指定します。

英文解説箇所

(x86_64) Win64APIの場合

../configure --prefix=/opt/local/bin --host=x86_64-w64-mingw32 --disable-shared --enable-unicode

(i686) Win32APIの場合

../configure --prefix=/opt/local/bin --host=i686-w64-mingw32 --disable-shared --enable-unicode

–prefix=の部分は、インストールしたmingw-w64のフォルダ名になります。

–host=の部分は、mingw-w64の-gccの前部分のコンパイラのファイル名です。

–disable-sharedは、共有ライブラリを使用しない(静的ライブラリを使用する)指定です。

–enable-unicodeは、Unicode(UTF-8)を使用する指定です。

しばーらくすると、build_win32_i686フォルダ下に各ファイルがコピーされて、Makefileが作成されて以下のような画面が出たら、makeリターンで、コンパイルが実行されて、最後にerrorなどの表示が出なければ、ライブラリの完成です。
win64bitのconfigure成功画面

コンパイルが完了したら、今度は、サンプルのコンパイルです。

cd samplesリターン

makeリターン

でサンプルのコンパイルが実行され、最後にerrorなどの表示が出なければ、問題なくサンプルの拡張子exe実行ファイルが各フォルダ下に作成されているはずです。

macOS 10.12へインストールしたWineでのサンプルexe実行画面

   

i686でコンパイルしたexe実行ファイルは、Wine2.0でも実行できますが、最終確認には、WindowsOSでの動作確認が必要となります。(^ ^;)

次は、macOSの静的ライブラリ作成になります。

安定板3.0.4と開発版3.1.1リリースでは、MacOS10.13でもコンパイルは正常にできました。3.0.4と3.1.1リリース版でのconfigure入力操作

../configure --with-osx_cocoa --with-macosx-version-min=10.9 --with-macosx-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk --prefix="$(pwd)" --disable-shared --enable-unicode

–with-osx_cocoa –with-macosx-version-min=10.xは、MacOSXの最小バージョン指定です。

–with-macosx-sdk=でSDKファイルをフォルダ位置を含めて直接指定します。

しば〜らくすると、build_macosフォルダ下に各ファイルがコピーされて、Makefileが作成されてconfigure成功画面が出たら、makeリターンで、コンパイルが実行されて、最後にerrorなどの表示が出なければ、ライブラリの完成です。

その後、ターミナルで

cd samplesリターン

makeリターン

でサンプルのコンパイルが実行されて、最後にerrorなどの表示が出なければ、問題なくサンプルのアイコン表示の実行ファイルが各フォルダ下に作成されているはずです。

   

そうそう、El Capitanでの問題ですが、Finderの操作中にフォルダのファイル数が多く、頻繁に移動しているとFinderが異常終了する事があります。Sierraへバージョンアップしたら問題なくなりました。d( ̄  ̄)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です