1990年代に販売(のちに個人向けに無償配布)されたBeOSの互換を目指して開発中のフリーソフトOSであるHAIKUにBeIDEのような統合開発環境としてはPaladinなどがあるがBeIDEほど使い勝手はよくなく解説書などもない。
そのため開発はコマンド入力による方法が主となる。(2024/7/19追記:2023年ごろからGenioという統合開発環境が登場している。)
ソースファイルとヘッダファイルおよびmakefileは下のように作成する。
MAKEコマンドでコンパイルするためソースファイルのある場所でOpen Terminalを起動する。
makeコマンドを実行。
コンパイルに成功すると下のように表示される。
編集はメニューバーから"Edit","Edit as text"を選ぶ。
変更部分
NAME=test |
この例ではアプリ名をtestと設定。
TYPE=APP |
APPは実行形式のファイル。
SRCS = \ test.cpp\ |
\の部分はHAIKUでは逆スラッシュで表示される。
この例ではtest.cppをソースファイルとして登録。
LIBS = be |
beは必須。他に必要なライブラリを追加できる。
LOCALE = ja-JP |
2バイトコードで文字表示をするために英語以外であることを設定。
BWindowクラスを使用したサンプル。
test.cpp
#include "test.h" MyWindow::MyWindow(BRect frame,const char* title,window_type type,uint32 flags) : BWindow(frame,title,type,flags) { } bool MyWindow::QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return true; } MyApp::MyApp() : BApplication("application/x-vnd.apptest") { m_win = new MyWindow(BRect(100,100,400,400),"test",B_DOCUMENT_WINDOW,0); m_win->Show(); } int main(int argc,char** argv) { MyApp *app; app = new MyApp(); app->Run(); delete app; return true; } |
test.h
#ifndef _H #define _H #include <Application.h> #include <Window.h> class MyWindow : public BWindow { public: MyWindow(BRect frame,const char* title,window_type type,uint32 flags); virtual bool QuitRequested(); }; class MyApp : public BApplication { public: MyApp(); private: MyWindow* m_win; }; #endif // _H |
BViewクラスを追加したサンプル。
test.cpp
#include "test.h" MyWindow::MyWindow(BRect frame,const char* title,window_type type,uint32 flags) : BWindow(frame,title,type,flags) { MyView = new BView(BRect (0,0,300,300),"view",B_FOLLOW_TOP | B_FOLLOW_LEFT,0) ; MyView->SetViewColor(127,127,123); AddChild(MyView); } bool MyWindow::QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return true; } MyApp::MyApp() : BApplication("application/x-vnd.apptest") { m_win = new MyWindow(BRect(100,100,400,400),"test",B_DOCUMENT_WINDOW,0); m_win->Show(); } int main(int argc,char** argv) { MyApp *app; app = new MyApp(); app->Run(); delete app; return true; } |
test.h
#ifndef _H #define _H #include <Application.h> #include <Window.h> #include <View.h> class MyWindow : public BWindow { public: MyWindow(BRect frame,const char* title,window_type type,uint32 flags); virtual bool QuitRequested(); private: BView* MyView; }; class MyApp : public BApplication { public: MyApp(); private: MyWindow* m_win; }; #endif // _H |