スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【同じタグを付けた記事の一覧】

Media Player Classic - Black Edition(ポータブル)で設定が保存できない問題の対策

2016年09月27日(火)23時17分

Media Player Classic - Black Edition

少し前に Win7 から Win10 へ移行しました。
そしてその移行を機に、標準で使用するメディアプレーヤーも「Media Player Classic – Black Edition(以下「MPC-BE」)」に変更しました。
といっても、WinXP 時代は「Media Player Classic」、Win7 では「Media Player Classic - Home Cinema」を使っており、つまり長らく「Media Player Classic 系」を使用している点で大きな変わりはないのですが。
なお「標準で使用するメディアプレーヤー」とは、「MPC-BE が再生可能なすべてのメディア形式に関連付けし、ファイルのダブルクリックで起動して使える状態にしている」というような意味で書いています。

ポータブル化できるアプリケーションはなるべくポータブルに使うというポリシー

これら Media Player Classic 系(以下「MPC 系」)を気に入っている点の一つとして「設定を INI ファイルに記録することでポータブル運用を可能にする機能を標準で持っている」ということがあります。
この「ポータブルな運用」は、たとえ実際にそれを持ち運ぶことがないとしても、バックアップや OS 再インストール後の環境再構築等が楽になるというのが利点です。
そのため自分は「ポータブル運用可能なアプリケーションを優先的に選ぶ」「ポータブル化できるアプリケーションはなるべくポータブルに使う」といったポリシーを持っています。

「Program Files」フォルダにインストールして使うというポリシー

そしてもう一つ、「関連付けして使用するアプリケーションはなるべく「Program Files」フォルダにインストールして使う」というポリシー、というべきか「こだわり」のようなものもあるのです。
というのも「関連付けして使用するアプリケーション」は移動させるとファイルを開く際に問題がでます。
つまり、たとえポータブル運用可能なアプリケーションであっても移動させることはないわけです。
それで「どうせ移動させることがないなら標準的な作法に従おう」ということで、このようなポリシーになっています。

設定が保存されないという問題

上記の二つのポリシーが組み合わさった結果、わが環境における MPC 系は、インストーラ版で「Program Files」フォルダにインストールして固定的に使うにもかかわらず、ポータブル化もしてあるという状態です。
もちろん「いざとなればフォルダごと持ち出せばどこでもいつもの設定で使用できる」とか「設定のバックアップもフォルダを一つ丸ごとコピーするだけで済みレジストリどうこうを考えなくてもよい」といった「ポータブルの利点」は依然としてあるため、まったく意味がないわけではありません。
ただ困ったことに、MPC 系でこの使い方をした場合、なぜか設定を変更しても記憶されないという問題があるのです。

UAC と回避策

これは Vista 以降では UAC により、管理者であっても通常時はユーザー権限でアプリケーションが実行されるため、システム領域である「Program Files」フォルダへの書き込みができないために起こるようです。
ただし通常、UAC 機能の有効な Windows ではこの問題への回避策として、「Program Files」フォルダ以下に存在する INI ファイル等への書き込みは、ユーザーのプロファイルフォルダに置かれた VirtualStore 領域にリダイレクトされることで、ユーザー権限でも一見普通に読み書きできるように見える仕組みが用意されています。
ところが MPC 系ではなぜかその仕組みは働かないようです。
この問題に対する回避策としては、「Program Files」フォルダ以外に置いたり、あるいは管理者権限で起動するというような方法があります。
しかし「Program Files」フォルダ以外に置くのは前述のポリシーの問題で不可、また毎回管理者権限で起動するのも煩わしいためできれば避けたい手段です。

INI ファイルに書き込み属性を付加

とはいえ実際のところ、メディアプレーヤーの設定変更などそれほど頻繁におこなうものではないため、これまでは変更するときのみ管理者権限で起動して対応していました。
ところが今回ふと「INI ファイルのアクセス許可を変更し、書き込み属性を付加することで回避できるのではないか」と思いついたのです。
で、コマンドプロンプト(管理者)を開き

cacls.exe "C:\Program Files\MPC-BE x64\mpc-be64.ini" /c /g everyone:f

してみたところ、目論見通りユーザー権限で起動しても設定の変更が保存されるようになりました。
ちなみに、ファイル「default.mpcpl」が存在する場合は、これにも

cacls.exe "C:\Program Files\MPC-BE x64\default.mpcpl" /c /g everyone:f

として書き込み権限をつけると、「終了時のプレイリストを記憶」オプションがオンであるのに記憶されない問題も解消されるはずです(「default.mpcpl」がない場合は手動で作る)。

セキュリティ

ただ、UAC による書き込み制限は、もちろん安全のために搭載されたものであって、それを回避するような手段をとることはセキュリティ的なリスクはあります。
今回はどうせ自分一人しか使わない PC であるため「everyone」に対して「フルコントロール」を付与しましたが、セキュリティのことを考えれば、使用するユーザーのユーザー権限のみに個別に書き込み属性を追加するようにしたほうが、いくらか安全かもしれません。

【同じタグを付けた記事の一覧】
ソフト紹介 ポータブル Windows 音楽管理

Code::Blocks をポータブルに使う(wxWidgets 編)

2016年05月31日(火)23時58分

環境構築

wxWidgets を(Code::Blocks で)使う」という目的のため、これまで長々と下記のような環境構築を続けてきました。

  1. Code::Blocks をポータブルに使う(セットアップ編)
  2. Code::Blocks をポータブルに使う(MinGW32 編)
  3. Code::Blocks をポータブルに使う(MinGW64 編)
  4. wxWidgets 3.1.0 を MinGW でビルド

今回はいよいよ当初の目的であった wxWidgets プロジェクトの作成作業を行います。
その他の作業については「CodeBlocks」タグから一覧可能です。

グローバル変数の設定

まずはじめに、wxWidgets プロジェクトを生成する際に Code::Blocks が参照する wxWidgets の位置情報をグローバル変数として設定しておきます。
Code::Blocks のメニューから「設定 → グローバル変数」で設定画面を呼び出し、「現在の変数」行の「新規」ボタンで新しい変数「wx」を作ります。
作成した「wx」の「base」には「$(CodeBlocks)\Libraries\wxWidgets」と、Code::Blocks の位置を起点とした wxWidgets の格納場所を記載しておきます。

グローバル変数wx

が、実はこの「wx」は今回構築している環境下では使用しません。
ただ Code::Blocks のウィザードが「wx」を標準値として使用し、無ければ強制的に作成させられるために作っておくだけです。
ということで、本命のグローバル変数である下記の二つを上記と同様の手順で作成します。

  1. 「変数名 → wxmingw32」「base → $(CodeBlocks)\Libraries\wxWidgets\MinGW\32」
  2. 「変数名 → wxmingw64」「base → $(CodeBlocks)\Libraries\wxWidgets\MinGW\64」

グローバル変数wxmingw32

ちなみに、Code::Blocks wxWidgets プロジェクトウィザードが使用するのは「base」のみですので、「include」や「lib」の設定は不要です。
むしろせっかく設定しても使用してもらえないため、前回「wxWidgets 3.1.0 を MinGW でビルド」において、「include」フォルダを「lib」フォルダと同じ位置にコピーしていない場合、この「include」欄に「$(CodeBlocks)\Libraries\wxWidgets\include」を記載しておき、プロジェクト生成後に手作業で参照位置を書き換える必要があります。

グローバル変数wxmingw64

wxWidgets project

前準備はこれで終わりましたので、ウィザードで雛形となる基本的な wxWidgets プロジェクトを生成してみます。
まずはメニューの「ファイル → 新規 → プロジェクト」で「wxWidgets project」を「Go」です。

テンプレートから新規作成

確認画面は特に何度も見る理由はないと思われますので、「このページを次回スキップ」にチェックして「次へ」。

Welcome to the new wxWidgets project wizard!

使用する wxWidgets のバージョンですが、Code::Blocks 16.01 ではまだ「wxWidgets 3.1.x」が存在しませんので、とりあえず「wxWidgets 3.0.x」を選んでおきます。

Please select the wxWidgets version you want to use.

「プロジェクトタイトル」は「Test_wxMinGW64」としました。
つまり今回は64ビット版で作ります。

新しいプロジェクトのタイトルを入力してください。

作者情報は別になくても生成可能であるため、とりあえずなにも設定せずに「次へ」。

Please Enter Project Details.

今回は GUI ビルダーの類は使わないため「Preferred GUI Builder」は「なし」にします。
「Application Type」はダイアログ形式ではなく「Frame Based」にしてみました。

Please select your favourite GUI Builder to use.

次のこの質問で事前に準備したグローバル変数を使用します。
今回は64ビット版を作る予定であるため「$(#wxmingw64)」を指定し「次へ」。

Please select the location of wxWidgets on your computer.

「コンパイラー:」は64ビット版を作るので「GNU GCC Compiler 64」にします。

Please select the compiler to use and which configurations you want enabled in your project.

使用する wxWidgets の形式ですが、一つの EXE ファイルのみで実行できるのが好みであるため、今回は静的リンク版にします。
そのため「Use wxWidgets DLL」は非チェックです。
前回「wxWidgets 3.1.0 を MinGW でビルド」で静的リンク版は MONOLITHIC でビルドしているため「wxWidgets is build as a monolithic library」をチェックします。
また、Unicode 版でビルドしているため「Enable unicode」もチェックです。
ついでに、さらに細かい設定もあるようなので「Configure Advanced Options」にもチェックを入れておきます。

Please select various configuration options.

Warning

ここで以下のような内容の Warning が出ます。

A matching Debug configuration cannot be found in the wxWidgets directory you specified.

This means that Debug target of your project will not build.

Are you sure you want to continue with these settings?

A matching Debug configuration cannot be found in the wxWidgets directory you specified.

これは wxWidgets のデバッグ版をビルドしていないにもかかわらず、一つ前の質問で「"Debug"設定を作成」にチェックを入れていた場合にも出ます。
が、今回はそうではなく Code::Blocks 16.01 ではまだ対応していない「wxWidgets 3.1.x」を使用していることが原因です。
つまり Code::Blocks のウィザードは「3.0.x」用の LIB ファイルである「libwxmsw30ud.a」をリンクするファイルとして設定するのですが、「3.1.x」ではこれが「libwxmsw31ud.a」となっており、そのため指定された wxWidgets フォルダに必要なファイルがないとしてこの警告が出るわけです。
これは後で設定を変更することで対処するため、ここは「はい」で進めます。
もう一つ、上記の「Debug」が「Release」に変わっただけの Warning も出ますが、これも理由は同じであるため「はい」です。

A matching Release configuration cannot be found in the wxWidgets directory you specified.

最後に「Advanced options」ですが、せっかくの GCC で、かつ wxWidgets のデバッグ版も作っているのだから、ということで「Use _WXDEBUG_ and Debug wxWidgets lib」をチェックしました。
が、これになんの意味があるのかわからないので、もしかしたらしない方がいいのかもしれません。
また、作るのは GUI アプリケーションですので「GUI Mode Application」に変更し「完了」します。

Please select advanced options.

Hello Code::Blocks user!

とりあえずプロジェクトはできましたが、ビルド前にまず途中で出た Warning の対策をしておきます。
メニューの「プロジェクト → ビルドオプション」で「Debug → リンカ設定 → リンクするライブラリ」にある「libwxmsw30ud.a」を「編集」して「libwxmsw31ud.a」に変更します。

libwxmsw31ud.a

同様に「Release」の「libwxmsw30u.a」も「libwxmsw31u.a」に変えます。

libwxmsw31u.a

また、もし前回「wxWidgets 3.1.0 を MinGW でビルド」において、「include」フォルダを「lib」フォルダと同じ位置にコピーしていない場合、「プロジェクト → ビルドオプション → ディレクトリーの検索」タブの「コンパイラー」および「リソースコンパイラー」に「$(#wxmingw64.include)」を追加(または既に設定されている「$(#wxmingw64)\include」を上書き)する必要があります。

ディレクトリーの検索コンパイラーディレクトリーの検索リソースコンパイラー

ということで「ビルド → ビルドして実行」してみますと、以下の関数が「undefined reference to」と言われてエラーになります。

  • GetFileVersionInfoSizeW(GetFileVersionInfoSize)
  • GetFileVersionInfoW(GetFileVersionInfo)
  • VerQueryValueW(VerQueryValue)

また、以下の関数も「undefined reference to」です。

  • __imp_SHAutoComplete(SHAutoComplete)
  • __imp_AssocQueryStringW(AssocQueryString)

調べてみると前者は「libversion.a」、後者は「libshlwapi.a」に含まれていることがわかりましたので、この二つを「プロジェクト → ビルドオプション → リンカ設定 → リンクするライブラリ」に追加しました。
これも Code::Blocks が現時点(16.01)ではまだ「3.1.x」に対応していないことに要因があると思われます。

libversion.aとlibshlwapi.aを追加

これで再度「ビルド → ビルドして実行」してみたところ、めでたくウインドウが表示されました。

wxWidgets Application Template

ここで生成された「Test_wxMinGW64.exe」は静的リンクされていますので、wxWidgets が存在しない環境下でも EXE ファイル単体で実行可能です。
さらに GCC のリンカーオプションとして「-static-libgcc」「-static-libstdc++」も指定しておけば、完全に単体で実行可能なバイナリになります。
ちなみに、生成された EXE ファイルのサイズは Debug 版が 131MB で Release版が 7MB 程度でした。

【同じタグを付けた記事の一覧】
プログラミング ポータブル C++ CodeBlocks wxWidgets

wxWidgets 3.1.0 を MinGW でビルド

2016年04月30日(土)23時59分

wxWidgets

クロスプラットフォームな GUI ライブラリである wxWidgetsMinGW でビルドします。
ここ数回で進めている「Code::Blocks をポータブルに使う」ための環境構築(「CodeBlocks」タグで一覧可能)の一環ではありますが、今回は Code::Blocks の出番はありません。

フォルダ構成

ポータブル運用が目的であるため、MinGW は環境変数の設定などはしておらず、たんにファイル群を特定フォルダ以下に展開しただけの状態になっています。
そのフォルダ構成は Code::Blocks の位置をルート(「$(CodeBlocks)」)とすると、以下の通りです。

$(CodeBlocks) Compilers MinGW 32 MinGW 4.8.1」格納フォルダ
64 Mingw-w64 5.2.0」格納フォルダ

今回は上記に wxWidgetsMinGW 32ビット版と64ビット版が加わり、以下のようになります。

$(CodeBlocks) Compilers MinGW 32 MinGW 4.8.1」格納フォルダ
64 Mingw-w64 5.2.0」格納フォルダ
Libraries wxWidgets MinGW 32 wxWidgets 3.1.0(32ビット版)」格納フォルダ
64 wxWidgets 3.1.0(64ビット版)」格納フォルダ

wxWidgets 3.1.0 をダウンロード

wxWidgets はバージョン「2.8.x」の時代が長く、 メジャーバージョンが上がった「3.0.x」が出たのはわりに最近の話です。
そしてさらに今はマイナーバージョンも上がった「3.1.0」がリリースされています。
前述のとおり「2.8.x」時代が長かったため、ネット上に存在する関連情報やオープンソースプロジェクトは「2.8.x」を前提にしたものが多かったりするのですが、いずれは新しいもので置き換わっていくのだろうということで、今回は最新である「3.1.0」を使うことにしました。
ということで、Downloads ページから「Source Code」欄にある「Windows ZIP(または Windows 7Z)」をダウンロードします。

wxWidgets の展開と配置

目的は「Code::Blocks を軸に丸ごと持ち運べる開発環境」の構築です。
いずれは wxWidgets 以外の何かしらのライブラリも追加するかもしれませんので、Code::Blocks フォルダ内に「Libraries」フォルダを作り、wxWidgets はそこに配置することにしました。
つまり「$(CodeBlocks)\Libraries\wxWidgets」フォルダを生成し、その中にダウンロードした wxWidgets を解凍(展開)して得られたファイル群を配置します。
さらに、上記ファイル群をビルドして得られる DLL 等の生成物を置いておくため場所として、 「wxWidgets」フォルダ以下に「MinGW\32」フォルダと「MinGW\64」フォルダも作っておきます。

「MONOLITHIC な Static 版」と「非 MONOLITHIC な Dynamic 版」を作る

wxWidgets のビルドに入る前に、いくつかの方針を決める必要があります。

「ANSI」か「Unicode」か

まず、「ANSI」か「Unicode」かについては、wxWidgets 3.0 からは「Unicode」がデフォルトとなり、「ANSI」は非推奨で近い将来サポート外になると書かれていますので、「Unicode」一択です。

「Release」のみか「Debug」もか

次に、「Release」のみにするか「Debug」も作るかですが、何か困った時に Debug 版も必要になるかもしれないため、一応「Release」と「Debug」の両方を作ります。

「Static(静的リンク版)」か「Dynamic(DLL版)」か

また、「Static(静的リンク版)」か「Dynamic(DLL版)」かの選択肢も「両方」です。
個人的には「実行ファイルひとつ」が好みであるため静的リンク版しか使わない気もしますが、いつか使う可能性もないとは言えないため DLL 版も作ることにしました。

「MONOLITHIC(全機能を一ファイルにまとめる)」か「非MONOLITHIC(機能ごとに別々のファイルに分割)」か

そして、「静的リンク版はMONOLITHIC」、「DLL 版は非 MONOLITHIC」でビルドします。
本来 Static 版こそ非 MONOLITHIC で作り、選択的にリンクすることでバイナリサイズを減らすべきものだと思うのですが、実際に簡単なサンプルを Code::Blocks でビルドして試したところ、生成される実行ファイルのサイズに大差はありませんでした。
おそらくリンク時に不要な部分を削り取ってくれるオプションのようなものが付けられているのかと思いますが、そういうことであれば生成時にいちいち「どの機能が必要なのか」を考える必要がなく、まとめてひとつ指定するだけの MONOLITHIC 版の方が簡単でいいということになります。
そして Dynamic 版の方ですが、わざわざ「要 DLL な実行ファイル」をビルドしている時点で、配布時のファイル数の増加などは諦めていると思われますので、機能ごとにばらばらにファイル化されていても問題ないはず、ということから非 MONOLITHIC に決定しました。

32ビット版のビルド

ということで、まずは32ビット版をビルドします。
まず「$(CodeBlocks)\Libraries\wxWidgets\MinGW\32」フォルダに以下の内容をコピーした BAT ファイル「wxWidgets_MinGW_32_Build.bat」を作ります(別にファイル名は何でもいいのですが)。

::各種パス設定。先頭「CODEBLOCKS」にルートを設定することで全体の位置を制御可能。
SET CODEBLOCKS=D:\PortableApps\CodeBlocks
SET MINGW=%CODEBLOCKS%\Compilers\MinGW\32
SET WXWIDGETS=%CODEBLOCKS%\Libraries\wxWidgets
SET PATH=%MINGW%\bin
cd /d "%WXWIDGETS%\build\msw"

::事前に「%WXWIDGETS%\lib\gcc_lib\mswu\wx\msw」「\wxWidgets\lib\gcc_lib\mswud\wx\msw」フォルダを生成しておかないとビルド時にファイルコピーに失敗し詰まる。
IF NOT EXIST %WXWIDGETS%\lib mkdir %WXWIDGETS%\lib
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib mkdir %WXWIDGETS%\lib\gcc_lib
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswu mkdir %WXWIDGETS%\lib\gcc_lib\mswu
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswud mkdir %WXWIDGETS%\lib\gcc_lib\mswud
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswu\wx mkdir %WXWIDGETS%\lib\gcc_lib\mswu\wx
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswud\wx mkdir %WXWIDGETS%\lib\gcc_lib\mswud\wx
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswu\wx\msw mkdir %WXWIDGETS%\lib\gcc_lib\mswu\wx\msw
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswud\wx\msw mkdir %WXWIDGETS%\lib\gcc_lib\mswud\wx\msw

::以下Buildコマンド群。
::「-j4」は並行処理数の指定でCPUのコア数に応じて設定。
::末尾の「2>&1」は標準出力と標準エラーを同一のファイルにリダイレクトするためのコマンド。
::「%~dp0」は実行しているBATファイルのパス。

::「静的リンク + 非モノリシック」。
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=0 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_32_Build00R.log 2>&1
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=0 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_32_Build00D.log 2>&1

::「静的リンク + モノリシック」。
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=1 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_32_Build01R.log 2>&1
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=1 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_32_Build01D.log 2>&1

::事前に「%WXWIDGETS%\lib\gcc_dll\mswu\wx\msw」「\wxWidgets\lib\gcc_dll\mswud\wx\msw」フォルダを生成しておかないとビルド時にファイルコピーに失敗し詰まる。
IF NOT EXIST %WXWIDGETS%\lib mkdir %WXWIDGETS%\lib
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll mkdir %WXWIDGETS%\lib\gcc_dll
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswu mkdir %WXWIDGETS%\lib\gcc_dll\mswu
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswud mkdir %WXWIDGETS%\lib\gcc_dll\mswud
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswu\wx mkdir %WXWIDGETS%\lib\gcc_dll\mswu\wx
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswud\wx mkdir %WXWIDGETS%\lib\gcc_dll\mswud\wx
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswu\wx\msw mkdir %WXWIDGETS%\lib\gcc_dll\mswu\wx\msw
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswud\wx\msw mkdir %WXWIDGETS%\lib\gcc_dll\mswud\wx\msw

::「動的リンク + 非モノリシック」。
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=0 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_32_Build10R.log 2>&1
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=0 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_32_Build10D.log 2>&1

::「動的リンク + モノリシック」。
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=1 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_32_Build11R.log 2>&1
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=1 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_32_Build11D.log 2>&1

pause

上記 BAT ファイルを実行する前に、最低限2行目の「SET CODEBLOCKS=C:\CodeBlocks」の部分を、実際の Code::Blocks 配置フォルダ位置に書き換える必要があります。
また、各ビルドコマンドについている「-j4」は並行処理数の指定です。
自分が現在4コアの CPU を使用しているため「-j4」としていますが、ビルドに使用する PC の CPU(コア)数に合わせて書き換えます。
もう一つ、「-std=gnu++11」オプションについてですが、3.1.0 では付けても付けなくてもビルドできますのでどちらでも構いません(付ける場合は「CXXFLAGS+="-O3 」のうしろ辺りに追加)。
ただし 3.0.2 で64ビット版の場合は「-std=gnu++11」を付けないとビルド不可でした(32ビット版はなぜか付けなくてもビルド可能)。
書き換えが済めば BAT ファイル実行でビルドを開始します。
ちなみに全ビルド完了までにかなりの時間を要しました(うちの環境では確か1時間と少しぐらい)。

32ビット版の配置と clean

ビルドが完了したら「$(CodeBlocks)\Libraries\wxWidgets」フォルダの「include」と「lib」の2フォルダを「$(CodeBlocks)\Libraries\wxWidgets\MinGW\32」フォルダにコピーします。
…実際のところ「include」フォルダは32ビット版も64ビット版も同一で、ビルド時に何かの変化があるわけではありません。
わざわざコピーするのは Code::Blocks のウィザードで wxWidgets のプロジェクトを生成すると「include」と「lib」が同じ場所に存在することを前提とした設定がされてしまうため、別々の位置に置いておくと余計な手間がかかるためです。
なのでプロジェクト生成後に手動で指定するという場合は、「include」フォルダのコピーは不要ということになります。
コピーが終われば、32ビット版をビルドするために生成された各種ファイルの削除作業です。
「$(CodeBlocks)\Libraries\wxWidgets\MinGW\32」フォルダに以下の内容をコピーした BAT ファイル「wxWidgets_MinGW_32_Clean.bat」を作り、必要箇所を書き換え(書き換えるポイントはビルド BAT と同じ)た上で実行します。

::各種パス設定。先頭「CODEBLOCKS」にルートを設定することで全体の位置を制御可能。
SET CODEBLOCKS=C:\CodeBlocks
SET MINGW=%CODEBLOCKS%\Compilers\MinGW\32
SET WXWIDGETS=%CODEBLOCKS%\Libraries\wxWidgets
SET PATH=%MINGW%\bin
cd /d "%WXWIDGETS%\build\msw"

::以下Cleanコマンド群。
::CleanコマンドはBuildコマンドの末尾に「clean」をつけるだけ。
::「-j4」は並行処理数の指定でCPUのコア数に応じて設定。
::末尾の「2>&1」は標準出力と標準エラーを同一のファイルにリダイレクトするためのコマンド。
::「%~dp0」は実行しているBATファイルのパス。

::「静的リンク + 非モノリシック」。
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=0 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_32_Clean00R.log 2>&1
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=0 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_32_Clean00D.log 2>&1

::「静的リンク + モノリシック」。
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=1 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_32_Clean01R.log 2>&1
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=1 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_32_Clean01D.log 2>&1

::「動的リンク + 非モノリシック」。
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=0 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_32_Clean10R.log 2>&1
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=0 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_32_Clean10D.log 2>&1

::「動的リンク + モノリシック」。
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=1 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_32_Clean11R.log 2>&1
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=1 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_32_Clean11D.log 2>&1

pause

64ビット版のビルド

次は64ビット版のビルドですが、大体「32」の部分が「64」に変わる程度の違いしかありませんので、以下に「wxWidgets_MinGW_64_Build.bat」と「wxWidgets_MinGW_64_Clean.bat」だけを貼っておきます。

wxWidgets_MinGW_64_Build.bat

::各種パス設定。先頭「CODEBLOCKS」にルートを設定することで全体の位置を制御可能。
SET CODEBLOCKS=C:\CodeBlocks
SET MINGW=%CODEBLOCKS%\Compilers\MinGW\64
SET WXWIDGETS=%CODEBLOCKS%\Libraries\wxWidgets
SET PATH=%MINGW%\bin
cd /d "%WXWIDGETS%\build\msw"

::事前に「%WXWIDGETS%\lib\gcc_lib\mswu\wx\msw」「\wxWidgets\lib\gcc_lib\mswud\wx\msw」フォルダを生成しておかないとビルド時にファイルコピーに失敗し詰まる。
IF NOT EXIST %WXWIDGETS%\lib mkdir %WXWIDGETS%\lib
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib mkdir %WXWIDGETS%\lib\gcc_lib
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswu mkdir %WXWIDGETS%\lib\gcc_lib\mswu
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswud mkdir %WXWIDGETS%\lib\gcc_lib\mswud
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswu\wx mkdir %WXWIDGETS%\lib\gcc_lib\mswu\wx
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswud\wx mkdir %WXWIDGETS%\lib\gcc_lib\mswud\wx
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswu\wx\msw mkdir %WXWIDGETS%\lib\gcc_lib\mswu\wx\msw
IF NOT EXIST %WXWIDGETS%\lib\gcc_lib\mswud\wx\msw mkdir %WXWIDGETS%\lib\gcc_lib\mswud\wx\msw

::以下Buildコマンド群。
::「-j4」は並行処理数の指定でCPUのコア数に応じて設定。
::末尾の「2>&1」は標準出力と標準エラーを同一のファイルにリダイレクトするためのコマンド。
::「%~dp0」は実行しているBATファイルのパス。

::「静的リンク + 非モノリシック」。
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=0 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_64_Build00R.log 2>&1
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=0 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_64_Build00D.log 2>&1

::「静的リンク + モノリシック」。
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=1 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_64_Build01R.log 2>&1
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=1 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_64_Build01D.log 2>&1

::事前に「%WXWIDGETS%\lib\gcc_dll\mswu\wx\msw」「\wxWidgets\lib\gcc_dll\mswud\wx\msw」フォルダを生成しておかないとビルド時にファイルコピーに失敗し詰まる。
IF NOT EXIST %WXWIDGETS%\lib mkdir %WXWIDGETS%\lib
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll mkdir %WXWIDGETS%\lib\gcc_dll
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswu mkdir %WXWIDGETS%\lib\gcc_dll\mswu
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswud mkdir %WXWIDGETS%\lib\gcc_dll\mswud
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswu\wx mkdir %WXWIDGETS%\lib\gcc_dll\mswu\wx
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswud\wx mkdir %WXWIDGETS%\lib\gcc_dll\mswud\wx
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswu\wx\msw mkdir %WXWIDGETS%\lib\gcc_dll\mswu\wx\msw
IF NOT EXIST %WXWIDGETS%\lib\gcc_dll\mswud\wx\msw mkdir %WXWIDGETS%\lib\gcc_dll\mswud\wx\msw

::「動的リンク + 非モノリシック」。
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=0 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_64_Build10R.log 2>&1
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=0 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_64_Build10D.log 2>&1

::「動的リンク + モノリシック」。
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=1 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_64_Build11R.log 2>&1
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=1 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" > %~dp0wxWidgets_MinGW_64_Build11D.log 2>&1

pause

wxWidgets_MinGW_64_Clean.bat

::各種パス設定。先頭「CODEBLOCKS」にルートを設定することで全体の位置を制御可能。
SET CODEBLOCKS=C:\CodeBlocks
SET MINGW=%CODEBLOCKS%\Compilers\MinGW\64
SET WXWIDGETS=%CODEBLOCKS%\Libraries\wxWidgets
SET PATH=%MINGW%\bin
cd /d "%WXWIDGETS%\build\msw"

::以下Cleanコマンド群。
::CleanコマンドはBuildコマンドの末尾に「clean」をつけるだけ。
::「-j4」は並行処理数の指定でCPUのコア数に応じて設定。
::末尾の「2>&1」は標準出力と標準エラーを同一のファイルにリダイレクトするためのコマンド。
::「%~dp0」は実行しているBATファイルのパス。

::「静的リンク + 非モノリシック」。
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=0 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_64_Clean00R.log 2>&1
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=0 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_64_Clean00D.log 2>&1

::「静的リンク + モノリシック」。
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=1 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_64_Clean01R.log 2>&1
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=0 MONOLITHIC=1 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_64_Clean01D.log 2>&1

::「動的リンク + 非モノリシック」。
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=0 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_64_Clean10R.log 2>&1
mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=0 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_64_Clean10D.log 2>&1

::「動的リンク + モノリシック」。
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=1 UNICODE=1 BUILD=release CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_64_Clean11R.log 2>&1
::mingw32-make -j4 -f makefile.gcc USE_QA=1 SHARED=1 MONOLITHIC=1 UNICODE=1 BUILD=debug CFLAGS+="-O3" CXXFLAGS+="-O3 -fno-keep-inline-dllexport" clean > %~dp0wxWidgets_MinGW_64_Clean11D.log 2>&1

pause

wxWidgets の使い方

次回Code::Blocks のウィザードで wxWidgets のプロジェクトを作って動作確認を行います。
その他の作業については「CodeBlocks」タグから一覧可能です。

【同じタグを付けた記事の一覧】
プログラミング ポータブル C++ CodeBlocks wxWidgets

Code::Blocks を 16.01 にバージョンアップ

2016年03月16日(水)01時00分
更新:2017年05月27日(水)06時00分

Code::Blocks 16.01

ちょっと久しぶりに Code::Blocks のサイトを覗いて見たところ、新バージョンである 16.01 が出ていました。
Code::Blocks は「Wikipedia の該当ページ」にも書いてあるように、公式リリース版があまり出ず、今まではバージョン 13.12 で、つまり2013年12月に出たものが最新版だったのです。
ただし、開発中のソースコードから生成された「nightly builds」のサポートが充実しており、以前に書いた「Code::Blocks をポータブルに使う(セットアップ編)」では、それを実質的な最新バージョンとして使いました。
今回はその「nightly builds」でセットアップした環境を 16.01 にバージョンアップさせます。
この後にまた「nightly builds」や新バージョンが出た場合でも、おそらくは手順にそう変わりはないはずです。

バージョンアップ手順

「手順」と言っても、ただファイルコピーで置き換えただけで、そう大層な作業ではありません。
Code::Blocks をポータブルに使う(セットアップ編)」で構築した環境を「旧フォルダ」、16.10 版を「新フォルダ」とすると、以下のようになります。

  1. Downloads ページから「codeblocks-16.01-nosetup.zip」をダウンロードし解凍(展開)する。
  2. 旧フォルダから「AppData」「Projects」、および、その他の開発に使用するために生成したフォルダ群(「Compilers」「Libraries」等)を新フォルダへコピー。
  3. 旧フォルダから「wxmsw28u_gcc_cb.dll」を新フォルダへコピー。
  4. 旧フォルダから「\share\CodeBlocks\locale」フォルダを新フォルダへコピー。

以上です。
なお、Code::Blocks をポータブル起動するために必要な「CbLauncher.exe」は 16.01 で標準添付となりました。

【同じタグを付けた記事の一覧】
プログラミング C++ CodeBlocks wxWidgets

Code::Blocks をポータブルに使う(Clang 編)

2015年12月20日(日)20時05分

Clang

ここ数回にわたり、「Code::Blocks をポータブルに使う」ための環境構築を進めています(「CodeBlocks」タグから一覧可能)。
前回前々回でコンパイラとして MinGW を使えるようにしたわけですが、わざわざ「Compilers」という複数形名のフォルダを作っておきながら、中身は MinGW だけ、というのも寂しいため、もう一つ「Clang」も置くことにしました。

現状と完成図

現在までの時点で、フォルダ構成は以下のようになっています。

$(CodeBlocks) Compilers MinGW 32 MinGW 4.8.1」格納フォルダ
64 Mingw-w64 5.2.0」格納フォルダ

今回は上記に Clang の32ビットおよび64ビットのフォルダが追加され、以下のようになる予定です。

$(CodeBlocks) Compilers Clang 32 Clang(32) 3.7.0」格納フォルダ
64 Clang(64) 3.7.0」格納フォルダ
MinGW 32 MinGW 4.8.1」格納フォルダ
64 Mingw-w64 5.2.0」格納フォルダ

Clang フォルダの抽出

まずは「http://clang.llvm.org/」の Download ページから Windows 用のインストーラを入手します。
2015年12月時点での最新版は 3.7.0 ですので「LLVM-3.7.0-win32.exe」と「LLVM-3.7.0-win64.exe」をダウンロードしました。
これらはインストーラですので、ポータブルに使うためには中身を取り出す必要があるのですが、これが難しいのです。
インストーラ自体は「Universal Extractor」等の解凍ソフトで展開できる(参考「Universal Extractor でインストーラを解体する」)のですが、そのままではファイルが足りません。
普通にインストールした Clang フォルダと比較すると、例えば一番重要な「clang.exe」や「clang++.exe」が見つかりません。
これらは「msbuild-bin」フォルダに生成される「cl.exe」と同じものであり、インストール時にリネームコピーされているようです。
他にもそういうリネームコピーされるファイルがいくつかあり、さらには同一ファイルが見当たらない新規ファイルまであります。
つまり、インストール時に何かしらのファイル生成処理もなされているようです。
というようなことから、これは素直に普通にインストールし、インストーラが生成したフォルダをコピーするのがいいと思われます。
Visual C++ がインストールされていると、その設定を書き換えたりまするようなので、自分は仮想環境にインストールして抽出しました。

Code::Blocks のコンパイラー設定(32)

Code::Blocks を「CbLauncher.exe」で起動し、メニューの「設定 → コンパイラー(C)」でコンパイラー設定ダイアログを呼び出し、「LLVM Clang Compiler」を「コピー」して「LLVM Clang Compiler 32」を作ります。
次に「ツールチェイン実行ファイル」タブの「コンパイラーのインストールディレクトリー」を「$(CodeBlocks)\Compilers\Clang\32」に書き換えます。

コンパイラーのインストールディレクトリー

また、その下にある「追加のパス」タブに「$(CodeBlocks)\Compilers\MinGW\32\bin」を「追加」しておきます。

追加のパス

さらに、「ディレクトリーの検索」タブの「コンパイラー」タブに以下の項目を「追加」します。

  • $(CodeBlocks)\compilers\mingw\32\lib\gcc\mingw32\4.8.1\include\c++
  • $(CodeBlocks)\compilers\mingw\32\lib\gcc\mingw32\4.8.1\include\c++\mingw32
  • $(CodeBlocks)\compilers\mingw\32\lib\gcc\mingw32\4.8.1\include\c++\backward
  • $(CodeBlocks)\compilers\mingw\32\lib\gcc\mingw32\4.8.1\include
  • $(CodeBlocks)\compilers\mingw\32\include
  • $(CodeBlocks)\compilers\mingw\32\lib\gcc\mingw32\4.8.1\include-fixed

コンパイラー

同じく「リンカ」タブに以下の項目を「追加」します。

  • $(CodeBlocks)\compilers\mingw\32\lib\gcc\mingw32\4.8.1
  • $(CodeBlocks)\compilers\mingw\32\lib\gcc
  • $(CodeBlocks)\compilers\mingw\32\mingw32\lib
  • $(CodeBlocks)\compilers\mingw\32\lib

リンカ

Code::Blocks のコンパイラー設定(64)

前半は32ビット版と同じで、ただ文字列中の「32」を「64」に置き換えるだけです。
後半で「ディレクトリーの検索」タブの「コンパイラー」タブに「追加」する項目が以下のように変更になります。

  • $(CodeBlocks)\Compilers\MinGW\64\lib\gcc\x86_64-w64-mingw32\5.2.0\include
  • $(CodeBlocks)\Compilers\MinGW\64\lib\gcc\x86_64-w64-mingw32\5.2.0\include-fixed
  • $(CodeBlocks)\Compilers\MinGW\64\x86_64-w64-mingw32\include
  • $(CodeBlocks)\Compilers\MinGW\64\x86_64-w64-mingw32\include\c++
  • $(CodeBlocks)\Compilers\MinGW\64\x86_64-w64-mingw32\include\c++\x86_64-w64-mingw32
  • $(CodeBlocks)\Compilers\MinGW\64\x86_64-w64-mingw32\include\c++\backward

また、「リンカ」タブに「追加」する項目も以下に変更になります。

  • $(CodeBlocks)\Compilers\MinGW\64\lib\gcc\x86_64-w64-mingw32\5.2.0
  • $(CodeBlocks)\Compilers\MinGW\64\lib\gcc
  • $(CodeBlocks)\Compilers\MinGW\64\x86_64-w64-mingw32\lib
  • $(CodeBlocks)\Compilers\MinGW\64\lib

Hello world!

動作確認の「Hello world!」やスタティック(静的)リンクにする方法は、以前に書いた「Code::Blocks をポータブルに使う(MinGW32 編)」の該当部分とほぼ同じです。

追加するパスの確認方法

上記で設定した「ディレクトリーの検索」タブの各項目は、今回使用した MinGW のバージョンに対応するものです。
つまり MinGW のバージョンが違えば設定する内容も変わります。
これらは MinGW(GCC)がソースコードをビルドする際に参照する各種のパスですから、GCC に「-v」オプション(詳細表示)を付けて、何か適当なソースコードをビルドさせれば、表示されるメッセージから取得することができます。
例えば「gcc -v test.c 2> test.txt」とすれば、生成された「test.txt」中の「#include <...> search starts here:」以下に、C ソースコードをビルドする際に必要なインクルードパスが確認可能です。
これは Clang をコマンドライン等から使用する際に、環境変数「C_INCLUDE_PATH」にセットすべき内容でもあります。
C++ ソースコードをビルドする際に必要なパス「CPLUS_INCLUDE_PATH」は「gcc -v test.cpp 2> test.txt」で取得します。
これにはおそらく「C_INCLUDE_PATH」も含まれていますので、たんに Code::Blocks に設定すべき内容が欲しいだけならこちらを確認するだけで十分なはずです。
また、「リンカ」タブに設定すべき内容は、C/C++ どちらのビルドメッセージからでも「LIBRARY_PATH」行以下に記載されています。
これはもちろん、Clang をコマンドライン等から使用する際に環境変数「LIBRARY_PATH」にセットするパス群です。

「threads-posix」と「-pthread」オプション

前回「Code::Blocks をポータブルに使う(MinGW64 編)」で、Mingw-w64 では「threads-win32」か「threads-posix」かを選択する必要があることを書きました。
もしここで「threads-posix」を選んでいた場合、64ビット版 Clang では「リンカ設定 → その他のリンカーオプション」で「-pthread」を指定しないとリンクエラーでビルドできません。
もちろんこのオプションをつけて生成した実行ファイルでは「コンピューターに libwinpthread-1.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。」が出ますので、その対策も必要です(前回参照)。

libwinpthread-1.dll エラー

wxWidgets

ということで、次回はやっと本来の目的である wxWidgets の準備に取り掛かろうと思います。
その他の作業については「CodeBlocks」タグから一覧可能です。

【同じタグを付けた記事の一覧】
プログラミング ポータブル C++ CodeBlocks LLVM UniversalExtractor wxWidgets

スポンサーサイト

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
07 | 2017/08 | 09
- - 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 - -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(66)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(35)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(27)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(18)
WindowsLiveWriter(15)
画像管理(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
fi-6130(9)
FLAC(9)
JavaScript(9)
ウォークマン(9)
英語音読学習計画(8)
Gracenote(8)
Prolog(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
spcbght(7)
wxWidgets(7)
VirtualBox(6)
W63CA(6)
DCP-J552N(6)
WinRT(6)
WindowsLiveMesh(6)
iGoinLM(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
MP3Gain(6)
LAME(5)
音楽技術(5)
Mery(5)
楽器演奏(5)
GalateaTalk(4)
nLite(4)
WindowsLiveSkyDrive(4)
ホームページ(4)
GalateaProject(4)
MIDI(4)
LLVM(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
105位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
8位
アクセスランキングを見る>>
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。