"ソフコン2002 3rd Edition featuring l'agenda"
|
【国内記事】 | 2001年12月14日更新 |
さて,l'agenda対応ソフトを作ろうとしているわけだが,l'agendaだけにしか対応しないソフトは少ないだろう。既存ソフトをl'agendaに移植するケースも多いのではないかと思う。そのため,l'agendaで動作するときと,それ以外のCEマシン用のソースコードを切り分ける必要が出てくる。
この処理の切り分けはl'agendaに限らず今までも必要になってきた。例えば,“PocketPC専用の処理を行う”などである。その場合には以下のように行ってきた。
#if defined(_WIN32_WCE_PSPC) && (_WIN32_WCE >= 212)
//PocketPC用のソース
#else
//非PocketPC用のソース
#endif
このように#ifなどプリプロセッサを使って,処理を切り分けてきた。ではBE500(l'agenda)の場合,どのようなプリプロセッサを使えばいいのであろうか?
実を言うと,BE500を特定できるようなプリプロセッサは用意されていないのである。これは困った。何か対処方法はないだろうか?
ここで私が行っている方法を紹介したい。それはBE500専用の構成を作成し,その構成でプリプロセッサを自分で指定する,というものである。その構成ではBE500用のSDKでしかコンパイルしないことにする。それ以外の構成ではBE500用以外のSDKでコンパイルすることにする。
まず,[ビルド]-[構成]でBE500用の構成を追加する。構成名はとりあえず,BE500Rel とでもしよう。CPUはMIPS,設定のコピーではMIPSのものをコピーする。
新しい構成ができあがったら,早速,アクティブな構成に新しい構成を指定し,設定を変更する。[プロジェクト]-[設定]の「C/C++」タブで,「プリプロセッサの定義」というところの最後にBE500特有を表すプリプロセッサを自分で(適当に)決めて指定する。例えば,LAGENDA_BE500 などだ。
そして,以下のようにすればよい。
#ifdef LAGENDA_BE500
//l'agenda用のソース
#else
//非l'agenda用のソース
#endif
あとは,l'agenda用の構成では,l'agenda用のSDKでのみビルドするように注意するだけである。
このようにすることで,l'agendaとそのほかのCE用のソースコードを切り分けることが可能となる。
なお,もしMFCを使用する場合,このl'agenda用構成では,「共有DLLでMFCを使用する」にしておく。そうしないとリンクエラーが出る場合がある。MFC用のDLLはl'agendaに最初から内蔵されているので,スタティックリンクする必要性はない。
今後の連載でl'agenda特有の機能を次々と使っていくことになる。そのサンプルコードでは簡潔にするためl'agendaでしか動かないような記述をしていくが,実際には(ほかのCEマシンでの動作も考慮に入れる場合には)今回のような方法で既存ソフトとソースを切り分けていくことになる。
関連記事
Windows CEソフトウェアコンテスト2002 3rd Edition featuring l'agenda開催
第1回 開発環境を入手しよう!
第2回 ラジェンダの特徴
第3回 開発環境のインストール
第4回 作ったソフトを動かすには?
関連リンク
コンテストエントリーページ
開発者向けラジェンダ開発掲示板
eMbedded Visual Tools 3.0連載記事 - WindowsCE FAN
マイクロソフト Windows Embedded
[古原伸介,ITmedia]
Copyright © ITmedia, Inc. All Rights Reserved.
最新CPU搭載パソコンはドスパラで!!
第3世代インテルCoreプロセッサー搭載PC ドスパラはスピード出荷でお届けします!!
最新スペック搭載ゲームパソコン
高性能でゲームが快適なのは
ドスパラゲームパソコンガレリア!