環境
- Mac OS Sierra
- Eclipse Oxygen (4.7.0)
- wxWidget 3 (osx_cocoa-unicode-3.0)
準備
brewでinstallしとくもの
- wxmac
たぶん必要なもの
- tiff
- jpeg
- png
- xz
もっとあると思うので適宜インストールする。
シェルの設定
シェルの設定ファイルにパスを通す必要があります。
export CFLAGS="$CFLAGS -I/usr/local/Cellar/xz/<version>/include" export CFLAGS="$CFLAGS -I/usr/local/Cellar/jpeg/8d/include" export CPPFLAGS="$CFLAGS" export CXXFLAGS="$CFLAGS" export LDFLAGS="$LDFLAGS -L/usr/local/Cellar/xz/<version>/lib" export LDFLAGS="$LDFLAGS -L/usr/local/Cellar/jpeg/8d/lib"
パスはバージョンに合わせて適宜書き換えてください。
Eclipseの設定
プラグインの導入
C/C++プロジェクトの作成に必要なプラグインをインストールします。
[peg-image src=”https://lh3.googleusercontent.com/-0HPohYDG7OI/WWzNac1onCI/AAAAAAAAAsg/kHfU-EAs-z0SQ7_yd1j47cgokFLiXfIygCCoYBhgL/s144-o/eclipse_plugin_install01.png” href=”https://picasaweb.google.com/101694633015118628628/6414447919756879953#6443751021161782306″ caption=”” type=”image” alt=”eclipse_plugin_install01.png” image_size=”597×341″ ]
[ヘルプ]→[新規ソフトウェアのインストール]でインストール画面を開きます。
作業対象セレクターをCDTへのURLに切り替えます。
CDTのURLがない場合は、適宜追加してください。
「CDTメイン・フィーチャー」から「C++開発ツール」をインストールします。
インストール後に再起動したら、新しいC++プロジェクトを作っていきます。
今回のプロジェクト名は「HelloWorld」とします。
プロジェクトの設定
C++プロジェクトを作成したら、プロパティから設定を変えていきます。
[peg-image src=”https://lh3.googleusercontent.com/-izx2ehFo6Js/WWzPgxVH9UI/AAAAAAAAAss/Bw6Kab-0lr8Kq32OW8ydfT7CApP2mjO0wCCoYBhgL/s144-o/eclipse_Propertie01.png” href=”https://picasaweb.google.com/101694633015118628628/6414447919756879953#6443753328765039938″ caption=”” type=”image” alt=”eclipse_Propertie01.png” image_size=”392×695″ ]
プロジェクト名の上で右クリックすると、表示されるメニュー下部に
プロパティがあると思うので、クリックで開き、設定を書き換えていきます。
構成は「Debug」から「Release」にしておきます。
C/C++ ビルドの設定
右メニューの「C/C++ビルド」を展開して、「設定」項目を表示させます。
[peg-image src=”https://lh3.googleusercontent.com/-lBURRlhhd2M/WWzSjHc-0NI/AAAAAAAAAs8/9a6njGLQi98CmsJ54KRkXpkf7HuDKtWpQCCoYBhgL/s144-o/eclipse_Propertie02.jpg” href=”https://picasaweb.google.com/101694633015118628628/6414447919756879953#6443756667598196946″ caption=”” type=”image” alt=”eclipse_Propertie02.jpg” image_size=”791×569″ ]
ツール設定の設定
「ツール設定」タブの設定から行っていきます。
ここのタブでは4箇所ほど変更を加えます。
「MacOS X C++ Linker」→「高度な設定」の「コマンド行パターン」にある
${OUTPUT}の先頭に${BuildArtifactFileName}.app/Contents/MacOS/を追記します。
下記のような感じになるかと思います。
${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${BuildArtifactFileName}.app/Contents/MacOS/${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
「MacOS X C++ Linker」→「その他」の「リンカー・フラグ」に下記を設定します。
`/usr/local/bin/wx-config --libs`
「GCC C++ Compiler」→「インクルード」の「インクルード・パス(-I)」に
先ほどビルドした「wxWidgets/build-release/lib/wx/include」への
フルパスを設定します。
「GCC C++ Compiler」→「その他」の「その他のフラグ」に下記を設定します。
`/usr/local/bin/wx-config --cppflags`
ビルド・ステップの設定
次は「ビルド・ステップ」タブの設定です。
[peg-image src=”https://lh3.googleusercontent.com/-K2QlPro0ol8/WWzU5FtYM8I/AAAAAAAAAtE/rNcXf9wlU08mMmYZOsl6mSi7LEOczUDRgCCoYBhgL/s144-o/eclipse_Propertie03.png” href=”https://picasaweb.google.com/101694633015118628628/6414447919756879953#6443759244110476226″ caption=”” type=”image” alt=”eclipse_Propertie03.png” image_size=”791×309″ ]
「ビルド前のステップ」のコマンドに、下記コマンドを設定してください。
mkdir -p ${BuildArtifactFileName}.app/Contents/MacOS;mv ${BuildArtifactFileName} ${BuildArtifactFileName}.app/Contents/MacOS/
Hello Worldの出力
新規ソース・ファイルを作成し、
下記のソースコードを入力してビルドしてみましょう。
#include <wx/wx.h> class MyApp: public wxApp { public: virtual bool OnInit(); }; class MyFrame: public wxFrame { public: MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size); private: void OnHello(wxCommandEvent& event); void OnExit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); wxDECLARE_EVENT_TABLE(); }; enum { ID_Hello = 1 }; wxBEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(ID_Hello, MyFrame::OnHello) EVT_MENU(wxID_EXIT, MyFrame::OnExit) EVT_MENU(wxID_ABOUT, MyFrame::OnAbout) wxEND_EVENT_TABLE() wxIMPLEMENT_APP(MyApp); bool MyApp::OnInit() { MyFrame *frame = new MyFrame( "Hello World", wxPoint(50, 50), wxSize(450, 340) ); frame->Show( true ); return true; } MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) : wxFrame(NULL, wxID_ANY, title, pos, size) { wxMenu *menuFile = new wxMenu; menuFile->Append(ID_Hello, "&Hello...\tCtrl-H", "Help string shown in status bar for this menu item"); menuFile->AppendSeparator(); menuFile->Append(wxID_EXIT); wxMenu *menuHelp = new wxMenu; menuHelp->Append(wxID_ABOUT); wxMenuBar *menuBar = new wxMenuBar; menuBar->Append( menuFile, "&File" ); menuBar->Append( menuHelp, "&Help" ); SetMenuBar( menuBar ); CreateStatusBar(); SetStatusText( "Welcome to wxWidgets!" ); } void MyFrame::OnExit(wxCommandEvent& event) { Close( true ); } void MyFrame::OnAbout(wxCommandEvent& event) { wxMessageBox( "This is a wxWidgets' Hello world sample", "About Hello World", wxOK | wxICON_INFORMATION ); } void MyFrame::OnHello(wxCommandEvent& event) { wxLogMessage("Hello world from wxWidgets!"); }
ビルドが成功したら、Releaseフォルダの中に、
<ファイル名>.appというファイルが作成されているかと思います。
[peg-image src=”https://lh3.googleusercontent.com/-6udxIOAf8UY/WWzXyNZlB9I/AAAAAAAAAtc/y2TbtUqXJ249fEZNXODNNhQ_5uEONuXsgCCoYBhgL/s144-o/wxwidgets_helloworld.png” href=”https://picasaweb.google.com/101694633015118628628/6414447919756879953#6443762424450713554″ caption=”” type=”image” alt=”wxwidgets_helloworld.png” image_size=”452×341″ ]
起動してみるとHello Worldと書かれたウィンドウが表示されるかと思います。
あとは色々試してみてください。
Unresolved inclusionエラーの対策
このままではコンテンツ・アシストが使えないので、
インクルードパスを通します。
プロパティから「C/C++ 一般」→「パスおよびシンボル」の
「インクルード」タブを開きます。
wx-config --cppflags
上記コマンドで表示されるincludeディレクトリまでのパスを追加します。
- すべての構成に追加
- すべての言語に追加
上記2つにチェックをいれておいてください。
[peg-image src=”https://lh3.googleusercontent.com/-HzUF8Zu6ydw/WXFzseh4qII/AAAAAAAAAuw/VZr8ExX5604tOz4_ZTofHdOe_tRK8iiUACCoYBhgL/s144-o/eclipse_Propertie05.png” href=”https://picasaweb.google.com/101694633015118628628/6414447919756879953#6445059749690517634″ caption=”” type=”image” alt=”eclipse_Propertie05.png” image_size=”587×265″ ]
参考
- EclipseにCDTを追加する手順
- How do I create projects on Xcode 7 using wxWidgets?
- Creating CDT projects for wxWidgets applications
- Developing for wxWidgets using Eclipse and the CDT
- wxWidgets 2.9.3 を C++11 としてコンパイルする (Mac OS X 10.7 Lion)
- Set Build output directory in Eclipse – c++
- “Unresolved inclusion” error with Eclipse CDT for C standard library headers