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

Yutaka MATSUBARA yutaka @ ertl.jp
2016年 6月 3日 (金) 08:00:30 JST


都甲様

名古屋大学の松原です.

サブディレクトリを使用するサンプルプログラムの追加と,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=* でもサブディレクトリが使える
> ようになります。
>
> 以上ご検討くださいませ。
>

-- 
松原豊(Yutaka MATSUBARA)
名古屋大学 大学院情報科学研究科
   附属 組込みシステム研究センター