忍者ブログ
ロボット、千葉ロッテマリーンズについていいかげんなことを書きます。
[14]  [15]  [16]  [17]  [18]  [19]  [20]  [21]  [22]  [23]  [24
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

実を言うとGitHubのsubmoduleを最近まで使ったことがありませんでした。

いろいろ試していたのですが、その中で根本的な勘違いをしている事に気づきました。
submoduleとはこのサイトに書いてあるとおり、「現在のリポジトリのクローン中に、別のリポジトリの特定のコミットを、サブディレクトリとして参照する」という機能らしいです。

どうにも僕は太字部分を勘違いしたらしく、参照したリポジトリが更新されると勝手にsubmoduleも更新されるものと思っていました。
どうやらこちらで設定しなおす必要があるみたいですね。


GitHub for windowsのGUIでのsubmoduleの追加の方法が分からなかったので、とりあえずGit Shell上でコマンドを入力して追加しています。

まず以下のコマンドでsubmoduleを追加します。


git submodule add https://github.com/Nobu19800/RobotArmController.git RobotArmController



問題はRobotArmControllerというリポジトリを変更した後なのですが、先ほど言ったように自動的には更新されないので以下のコマンドを入力してください。

git submodule foreach 'git checkout master; git pull'
git add RobotArmController
git commit -m "update RobotArmController"
git push origin master


これで更新されるはずです。



Download ZIPをクリックしてダウンロードした場合、submoduleはダウンロードされません。
cloneした場合でも以下のコマンドを入力しないとsubmoduleはcloneされません。

git submodule init
git submodule update

submoduleの中にsubmoduleがある場合もあるので以下のコマンドの方が良いとからしい。


git submodule update --recursive




なんだか凄く面倒くさいなあ。
Windowsだと余計に使いづらい。
自分で作ったコードだったらsubmodueを使わずにそのまま入れた方がましな感じがしなくもないです。







にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
PR
RTCビルド自動化ツール複合コンポーネント作成支援ツールを更新しました。

ビルド自動化ツールはあまり変わっていないのですが、複合コンポーネント作成支援ツールはパッケージ作成機能を追加しました。

作成したプロジェクトを利用するのにツール本体をインストールしておく必要があったわけですが、それがそもそも良くなかったと思っていたのでツールを入手してなくても動作できるようにしました。
プロジェクトを作成後にパッケージをどこかに作成するだけです。




生成されたフォルダのstart.bat(start.sh)を起動するとRTCの起動、接続、コンフィギュレーションパラメータの設定、複合コンポーネントの作成を行います。


必要なdllがある場合は自分で追加する必要があります。
一応rtcdを動作させるのに必要なdllは自動的にコピーするようにしていますが、配布する場合はライセンスを記述したテキストファイルを付属させるようにしてください。











ここからはCMakeの話です。
CMakeでインストーラーまで作成するにはCMakeLists.txtに以下の記述を追加します。


set(CPACK_GENERATOR "WIX") もしくは set(CPACK_GENERATOR "NSIS")
include(CPack)


まあ他にも以下の項目を設定した方が良いとは思いますが、ちょっと試すだけなら上記だけで大丈夫です。

CPACK_PACKAGE_NAME
CPACK_PACKAGE_VENDOR
CPACK_PACKAGE_DESCRIPTION_SUMMARY
CPACK_PACKAGE_VERSION
CPACK_PACKAGE_VERSION_MAJOR
CPACK_PACKAGE_VERSION_MINOR
CPACK_PACKAGE_VERSION_PATCH
CPACK_PACKAGE_INSTALL_DIRECTORY



後はPACKAGEというプロジェクトをビルドするとインストーラーが作成できるみたいです。





あと、cmakeを使えば環境にかかわらず以下のコマンドでビルドができるみたいです。

cmake --build . --config Release --target PACKAGE



自動的にvcvarsall.batとかVsDevCmd.batを見つけてMsBuildを使っているのだろうか?
仕組みはよく分かりませんけどそれでできるのであればそれでいいです。











にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
RTCのインストーラー作成時にrt_middleware_logo.ico、rt_middleware_logo.bmpが見つからないエラーが出ると言いましたが、どうやら既知の不具合だったみたいです。
Deselect_required_by_componentというマクロからのエラーはドキュメント生成をONにした場合に発生するエラーだと思うので、そのページに書いてある通りBUILD_DOCUMENTATIONをOFFにしてください。

それから例のPARENT_SCOPEオプションが間に入るのも既知だったみたいなので、そのページの通りに修正してください。

やっぱり仕様だったみたいです。

PythonのCMakeLists.txtの不具合に関しては載っていなかったので既知なのかどうかは不明です。










rtc.confで設定したモジュール探索パスはrtc.confが存在するディレクトリからのパスではなくてrtcdを実行したディレクトリからのパスになります。

なので以下のようなバッチファイル、シェルスクリプトをrtc.confと同じフォルダに作成して実行すれば良いということになります。

run.bat

cd /d %~dp0
rtcd -f rtc.conf


run.sh
#!/bin/sh
cd `dirname $0`
rtcd -f rtc.conf

簡単な事なのですが、こういうファイルを付属してくれたら便利かもしれないです。









以前から気になっていたのですが、PythonのRTCでidlcompile.batを実行すると構文エラーが出ていませんかね?
「'do'は、内部コマンドまたは外部コマンド操作可能なプログラムまたはバッチファイルとして認識されません」と出るので、どうやらif文の所のdoがいらないみたいです。
このエラーのせいでpython.exeがパスから見つかっても、見つからなかった場合の処理も行います。
まあ別にそれで何か問題があるか言うと、全く問題はないので放置しておいても大丈夫です。










にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
今度はPythonでも試してみたのですが、CMakeの段階で失敗しました。
CMakeLists.txtを読んでみると、
 
 
set(CPACK_RESOURCE_FILE_LICENSE "@CMAKE_CURRENT_SOURCE_DIR@/cpack_resources/License.rtf")
 
 
の部分が、License.rtfは実際にはcmakeというフォルダにあるみたいなのでここでエラーが出るみたいです。

インストーラーを作成したい人は上の箇所を修正してください。

そこさえ修正すればPACKAGEというプロジェクトをビルドすることでインストーラーが作成できます。
どうやらPythonのRTCではWIXでインストーラーを作成しているみたいなので、C++のRTCでは何故NSISでインストーラーを作成してしまったのかが余計に分からなくなりました。
そしてインストールすると以下のディレクトリに各ファイルがインストールされます。

C:\Program Files\RTC名バージョン名


INSTALLという名前のプロジェクトを実行した場合、


C:\Program Files (x86)\OpenRTM-aist\1.1\components\python\RTC名バージョン名


と全然違う場所にインストールされるみたいですが、一体どういう意図があるのかが分かりません。

しかもC++のRTCと違ってCMakeLists.txtの中でCMAKE_INSTALL_PREFIXを設定しているみたいなので、CMakeでプロジェクトを作成する段階でこちらでインストールするディレクトリを設定する事はできないみたいです。

ちなみにcmakeでプロジェクトを作成するときに以下のようなコマンドを入力すればインストールするディレクトリを設定することはできます。
cmake . -D CMAKE_INSTALL_PREFIX=パス .
この方法ではPythonのRTCのインストールするディレクトリは上述したように設定できません。
CMakeLists.txtを直接編集するしかないのですかね?












にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
WindowsでRTCのインストーラーを作成しようとしたら失敗しました。
PACKAGEというプロジェクトをビルドしたら作成できるはずなのですが、エラーが出ます。

ビルドすると_CPack_Packages/win32/NSISにproject.nsiというファイルが生成されて、このファイルからNSISでインストーラーを作成するみたいなのですが、そこでエラーが出ているみたいです。

ログを見てみるとcmake/rt_middleware_logo.ico、cmake/rt_middleware_logo.bmpというファイルを探しているみたいなのですが、cmakeフォルダにそのようなファイルは存在しません。

画像ファイルをこちらで作成して上のエラーを解決しても、Deselect_required_by_componentというマクロでエラーが出るみたいですね。

そこを乗り越えればインストーラーは作成できるようですが、Deselect_required_by_componentの何が悪いのかが分からないのでどう修正すれば良いのかが分かりません。
詳しい人は教えてください。




以前はNSISではなくWIXでインストーラー作成するようになっていたと思うのですが、変更したのでしょうかね?
cpack_options.cmake.inを読んでみた感じWIXに関する設定も記述してあるように見えるのですが、何故NSISでインストーラーを作成するようになっているのかは分かりません。


確か以前は、

C:\Program Files\OpenRTM-aist\1.1\components\C++\RTC名

にインストールされるようになっていたはずなのですが、

C:\Program Files\RTC名バージョン名

に変更されています。
まあデフォルトがこの場所と言うだけで、こちらで変更はできるみたいですけど。

以前のバージョンでインストーラーを作成したことがないのでハッキリしないのですが、このページには上記の場所にインストールされると書いてあります。

ちなみにINSTALLというプロジェクトをビルドした場合もC:\Program Files\RTC名バージョン名にインストールされます。


以前のようにcomponentsという名前のフォルダにインストールしてくれた方が分かりやすいと思いますが、それが仕様なので仕方ないです。











まあでも個々のRTCでインストーラーを作成するメリットはあまりないようには思います。
できれば複数のRTCをまとめてインストールできた方が簡単ですからね。


というわけでCMakeによるプロジェクト生成、ビルド、インストールまでを簡単にするツールを作ってみました。
ここからダウンロードできます。
GUIの追加ボタンを押してファイルを開くダイアログでCMakeLists.txtを選択してください。
そして保存するといくつかバッチファイル、シェルスクリプトが生成されます。

生成されたバッチファイルを実行すると、選択した全てのCMakeLists.txtでプロジェクト生成、ビルド、インストールをすることができます。


自分で使う分には簡単になったように思いますが、人が使う分にはまだ改善が必要のような感じです。








にほんブログ村 科学ブログ ロボットへ
にほんブログ村のロボットのカテゴリから
全然人が来ない・・・

人気ブログランキングへ
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新CM
[08/31 ysuga]
[08/31 Nobu]
[08/31 ysuga]
[12/11 Nobu]
[12/11 Kanamura]
最新TB
プロフィール
HN:
Nobu
年齢:
35
性別:
男性
誕生日:
1988/09/22
職業:
あれ
趣味:
妄想、自堕落
バーコード
ブログ内検索
P R
カウンター
忍者ブログ [PR]