[openrtm-users 00212] Re: rtc-templateの--idl-includeについて

Ando Noriaki n-ando @ aist.go.jp
2007年 10月 9日 (火) 10:48:09 JST


小島様

産総研 安藤です

> rtc-templateの-idl-includeオプションについてですが、
> rtc-templateのhelpには、idlファイルをコンパイルするとき
> 探すパスと書いてあるのですが、使い方を間違えているのか、
> 機能してくれません。

--idl-includeオプションは、IDLから実装ファイル (*SVC_impl.[cpp|h]) を
作成するときにIDLのプリプロセッサに渡すオプションです。
Cコンパイラの-Iオプションのようなものと思っていただいて構いません。

つまり、以下のようなIDLファイルをサービスのIDLとして指定したい場合、
#include <MyService.idl>

interface MyService2
 : MyService
{
  void new_operation();
};
--idl-includeに渡したパスから、MyService.idlを探すようにプリプロセッサに
指示するためのオプションです。

従って、--service-idl, --consumer-idl に渡すIDLファイルを--idl-includeに渡した
パスから探してくれるわけではありません。
--service-idlおよび--consumer-idlに渡すIDLファイルはカレントに置くか、
フルパスで指定してください。

また、現状のrtc-templateが生成するMakefileは上記のような、指定したIDLファイルが
他のIDLを参照するようなIDLファイルのコンパイルには対応しておりませんので、
そういった場合にはMakefileを修正する必要があります。

なお、このオプションは現状バグがあってうまく動きません。
以下のパッチを宛てると動くようになります。

---ここから
Index: rtc-template
===================================================================
RCS file: /export/pub/cvsroot/OpenRTM-aist/utils/rtc-template/rtc-template,v
retrieving revision 1.8.2.2
diff -u -r1.8.2.2 rtc-template
--- rtc-template        23 Jul 2007 08:06:27 -0000      1.8.2.2
+++ rtc-template        9 Oct 2007 01:20:25 -0000
@@ -675,7 +675,7 @@
                 'corbaport':    MakeCorbaPort(opts),
                'service_idl':  MakeServiceIDL(opts),
                'consumer_idl': MakeConsumerIDL(opts),
-               'idl_include':  find_opt_list(opts, "--idl-include", idl_inc),
+               'idl_include':  find_opt_list(opts, "idl-include", idl_inc),
                'fname':        output,
                'args':         sys.argv,
                'fmtd_args':    fmtd_args(70, sys.argv)

---ここまで

> 行った作業としては、一つ上のディレクトリにある hoge というディレクトリに
>  idl ファイルを置き、以下のようにコマンドを打ちました。
>
> rtc-template --idl-include=../hoge/
> (他のオプションは省略しまています)
>
> しかし、同じディレクトリにないためか、実行することができませんでした。
> そこで、Makefileに影響があるのかと思っていたのですが、
> 影響もないようです。
> また、rtc-templateによって生成されるcppファイルにも影響がないようです。
>
> このオプションはどこに反映されるものなのでしょうか?
>
> また、あるディレクトリをプロジェクトのidlを集めそこから参照する形にしたい
> のですが、作成する際、rtc-templateのオプションで解決できる方法がございましたらお教えください。

というわけですので、参照したいIDLファイルはフルパスで指定してください。

-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                   知能システム研究部門 タスクインテリジェンス研究グループ
                   〒305-8568 茨城県つくば市梅園1-1-1 中央第2
                   TEL: 029-861-5981 FAX: 029-861-5971
                   n-ando @ aist.go.jp, n-ando @ ieee.org



openrtm-users メーリングリストの案内