RTC Builderで生成した、VC++のプロジェクト内のファイルを相対パスで指定したい

4 個の投稿 / 0 new
最終投稿
n_sugiura
オフライン
Last seen: 10年 8ヶ月 前
登録日: 2013-08-21 16:27
RTC Builderで生成した、VC++のプロジェクト内のファイルを相対パスで指定したい

こんにちは。 杉浦と申します。

OpenRTMをまだ使い始めたばかりの初心者で基本的な質問ですいません。

RTC Builder(Eclipse)から、プロジェクトを作成し、 C MakeでVC++2008用のプロジェクトは作れました。

しかし、生成されたプロジェクト内のファイル(cppやhなど) の指定が全て絶対パスになっており、プロジェクトのフォルダを 移動すると全て設定しなおさないといけなく、困っております。

Visual Studioで普通にプロジェクトを作成したときのように、 プロジェクト内のファイルの指定を相対パスで生成することは 出来ないものでしょうか?

"RTC Builder" "相対パス"でググってみましたが解決法が みつけられなかったので質問させて頂きました。

よろしくお願い致します。

日本語
ysuga
オフライン
Last seen: 1年 8ヶ月 前
登録日: 2011-05-23 10:14
[openrtm-beginners:00474] RTC Builderで生成した、VC++のプロジェクト内のファイルを相対

杉浦様:
お世話になります.SSRの菅です.

> OpenRTMをまだ使い始めたばかりの初心者で基本的な質問ですいません。
> RTC Builder(Eclipse)から、プロジェクトを作成し、 C
> MakeでVC++2008用のプロジェクトは作れました。
> しかし、生成されたプロジェクト内のファイル(cppやhなど)
> の指定が全て絶対パスになっており、プロジェクトのフォルダを
> 移動すると全て設定しなおさないといけなく、困っております。

それはcmakeの仕様ですので,対応策はあまり無いです.
ただ,独自のライブラリをご利用になるにしても,
CMakeでほとんどの設定が可能です.
環境変数などを参照して,リンクするライブラリの位置を見つけられます.
cmake find_packageなどで調べてみてください.

また,このメーリスでもすこしはサポート出来ると思いますが,
本来のメーリングリストの目的とちょっとずれるので,返信がうまくつかないかもしれませんが・・・

たとえば,cmakeを使って○○というライブラリを使いたいんだけど・・・
という形でbegineersのMLに送っていただければ,
誰か詳しい人がサポート出来るかもしれません.
もちろん,ウェブ上の情報も使えます(日本語の情報がとても少ないのですが・・・)

n_sugiura
オフライン
Last seen: 10年 8ヶ月 前
登録日: 2013-08-21 16:27
[openrtm-beginners:00474] RTC Builderで生成した、VC++のプロジェクト内のファイルを相対

菅様 さっそくのご返事ありがとうございます。

いろいろ調べてみましたが、CMake自体は相対パスで出力してくれるようです。 CMakeのGUIで、Advancedにチェックを入れて、CMAKE_USE_RELATIVE_PATHSにチェックを入れると 大部分(*.cppや*.h)は相対パスでプロジェクトを生成してくれました。 ただ、あと一歩のところでうまく行かなかったです。 CMakeの仕様なのか設定の問題なのか、よくわかりませんが残念です。

一方で、CMakeを使わず、自分でlibファイルをリンクする方法があることをみつけましたので、 それでトライしてみます。

ysuga
オフライン
Last seen: 1年 8ヶ月 前
登録日: 2011-05-23 10:14
[openrtm-beginners:00478] (無題)

杉浦様:
菅です.

libファイルがあるのであれば,cmakeを使った方がシンプルでポータブルなパッケージになるので,
どちらかというとcmakeを使う方をお勧めしますが・・・

たとえば,あるライブラリが
%PATH_OF_LIB%\lib\mylib.libと
%PATH_OF_LIB%\lib\yourlib.lib
なら,トップレベルのCMakeで

set(MYLIB_LIBDIR "$ENV{PATH_OF_LIB}/lib")

として,MYLIB_LIBDIRを定義して,

さらにライブラリごとの名前を定義
set(MYLIB_LIBRARIES mylib yourlib)

これでMYLIB_LIBRARIESが "mylib yourlib"になります.

んで,srcの中のCMakeLists.txtで,

link_directories(${MYLIB_LIBDIR})
としてライブラリのディレクトリを追加して,

target_link_libraries(${PROJECT_NAME_LOWER} ${OPENRTM_LIBRARIES})

とある行の最後にさっきのライブラリ名を追加します.

target_link_libraries(${PROJECT_NAME_LOWER} ${OPENRTM_LIBRARIES}
${MYLIB_LIBRARIES})

慣れるとこっちの方が良いですよ.

2013年8月22日 17:31 :
> 菅様 さっそくのご返事ありがとうございます。
> いろいろ調べてみましたが、CMake自体は相対パスで出力してくれるようです。
> CMakeのGUIで、Advancedにチェックを入れて、CMAKE_USE_RELATIVE_PATHSにチェックを入れると
> 大部分(*.cppや*.h)は相対パスでプロジェクトを生成してくれました。
> ただ、あと一歩のところでうまく行かなかったです。
> CMakeの仕様なのか設定の問題なのか、よくわかりませんが残念です。
> 一方で、CMakeを使わず、自分でlibファイルをリンクする方法があることをみつけましたので、
> それでトライしてみます。
>
> _______________________________________________
> openrtm-beginners mailing list
> openrtm-beginners@openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-beginners

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2209
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク