(toppers-etrobo 86) Re: サブディレクトリのソースコードを取り込むための追加

Yutaka MATSUBARA yutaka @ ertl.jp
2016年 12月 15日 (木) 16:53:20 JST


EV3RTユーザの皆さま

名古屋大学の松原です。

β6-3でサポートされました,ソースコードのサブディレクトリ管理について, 
使い方の問い合わせを受けました。EV3RTのページにまとめましたので,お知 
らせします。

http://dev.toppers.jp/trac_user/ev3pf/wiki/FAQ#Qアプリケーションのソー 
スコードを複数のディレクトリに分けて管理するにはどうすれば良いでしょうか

ご参考になれば幸いです。

On 2016/06/03 8:00, Yutaka MATSUBARA wrote:
> 都甲様
>
> 名古屋大学の松原です.
>
> サブディレクトリを使用するサンプルプログラムの追加と,Makefile.appの修
> 正についてご提案頂き,ありがとうございます.反映したものをリリースする
> ようにします.
>
> On 2016/06/02 12:35, Takayuki TOGOU wrote:
>> ETロボコン2016関西地区実行委員の都甲です。
>> ML初投稿です。
>>
>> EV3RT Beta 6-2の sdk/workspace にあるサンプルコードには、
>> サブディレクトリの存在する場合がなく、全てのサンプルでファイルが
>> フラットに配置されております。
>> 先日ETロボコン地区MLにてサブディレクトリのある場合もビルドしたい
>> 旨の相談を受けて、その時は個別対応でクリアしたのですが、EV3RT の
>> 本式として「サブディレクトリはどうなっているか」調べてみました。
>> 開発環境は Cygwin + GNUARM 4.8 2014q3 です。
>>
>> sdk/common/Makefile.img の「ソースファイルのあるディレクトリに
>> 関する定義」のあたりで、アプリケーションディレクトリの下位の
>> include ディレクトリと src ディレクトリのパスを取得しているところが
>> あり、このディレクトリの作法を守ってサブディレクトリを作り、
>> Makefile.incにオブジェクトファイルを追加することで、make img=*
>> のビルドはできるようです。
>>
>> (helloev3の場合)
>> sdk
>> └─workspace
>>       ├─helloev3
>>       └─helloev3-subdir
>>           |  ├─include
>>           |  └─src
>>           └─subdir
>>               ├─include
>>               └─src
>>
>> 一方 make app=* でのビルドでは、make img=* と同じ対応を取っても
>> サブディレクトリが見つけられずに失敗します。そこで「ソース
>> ファイルのあるディレクトリに関する定義」の一部を応用して、
>> sdk/common/Makefile.app でもサブディレクトリを取り込めるように
>> 改修を加えました。
>>
>> diff -r -u hrp2.orig/sdk/common/Makefile.app
>> hrp2/sdk/common/Makefile.app
>> --- hrp2.orig/sdk/common/Makefile.app    2016-03-17 08:45:03.000000000
>> +0900
>> +++ hrp2/sdk/common/Makefile.app    2016-05-30 17:42:02.040405600 +0900
>> @@ -45,6 +45,12 @@
>>     OMIT_DEBUG_INFO = 1
>>
>>     #
>> +#  ソースファイルのあるディレクトリに関する定義
>> +#
>> +INCLUDES += $(foreach dir,$(shell find @(APPLDIR) -type d -name
>> include),-I$(dir))
>> +SRCDIRS += $(foreach dir,$(shell find @(APPLDIR) -type d -name
>> src),$(dir))
>> +
>> +#
>>     # Include common part
>>     #
>>     BUILD_LOADABLE_MODULE = 1
>>
>> これで make img=* と同様に make app=* でもビルドできるように
>> なりました。
>> beta4やbeta5の場合は、サンプルを流用して Makefile.appmod に
>> 同様の修正を加えると make mod=* でもサブディレクトリが使える
>> ようになります。
>>
>> 以上ご検討くださいませ。
>>
>

-- 
松原豊