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

4 posts / 0 new
Last post
n_sugiura
Offline
Last seen: 10 years 8 months ago
Joined: 2013-08-21 16:27
RTC Builderで生成した、VC++のプロジェクト内のファイルを相対パスで指定したい

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

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

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

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

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

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

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

Japanese
ysuga
Offline
Last seen: 1 year 8 months ago
Joined: 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
Offline
Last seen: 10 years 8 months ago
Joined: 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
Offline
Last seen: 1 year 8 months ago
Joined: 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

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK