2016-10-30 16 views
3

openkinectのウェブサイトからxbox kinectを使用する簡単なインストールをしています。問題は、OSXディストリビューションがないことと、自作があなたのためにインストールを処理すると想定されていることです。OS XでRPATHを変更する方法

インストールの最後のステップでは、私のインストールに何が問題なのかのヒントを得ました。

私はサイトから言われました。 「あなたはリンクに問題がある場合は、[次のコマンドを使用して各libfreenect LIBのRPATHを変更する必要があります。」

for i in /opt/local/lib/libfreenect*.dylib; do sudo install_name_tool -id $i $i; done 
sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/lib/libfreenect_sync.dylib 
sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/lib/libfreenect_cv.dylib 
sudo install_name_tool -change libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_cv.dylib 
for i in glview regview hiview glpclview tiltdemo record cppview cvdemo; do sudo install_name_tool -change libfreenect.0.2.dylib /opt/local/lib/libfreenect.0.2.dylib /opt/local/bin/$i; sudo install_name_tool -change libfreenect_sync.0.2.dylib /opt/local/lib/libfreenect_sync.0.2.dylib /opt/local/bin/$i; done 

私のRPATHは間違いなく間違ってに設定されています。そして、CMakeでビルドするときのこの二次メッセージは間違いなく私の疑問を確認します。

CMake Warning (dev): 
    Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake 
    --help-policy CMP0042" for policy details. Use the cmake_policy command to 
    set the policy and suppress this warning. 

    MACOSX_RPATH is not specified for the following targets: 

    fakenect 
    freenect 
    freenect_sync 

唯一の問題は、上記のコマンドが機能しないことです。理由は私のMacは私のすべてのファイルを/usr/local/lib/の下に置き、/opt/local/lib/にしないという理由があります。私はusrからoptにファイルのいくつかをコピーし、それはリンクエラーの数を減らしましたが、まだ残っています。繰り返しますが、ライブラリをすべてoptにロードしないと、この問題が解決しやすくなります。

上記のコードの最初のブロックを適切に実行する方法についての助けがあれば助かります!

サブノート(同様の問題):

答えて

2

これはあなたのケースのために本当に便利であればわかりません。 (例えば手元のプロジェクトが適切なリンカーのプロパティを設定していない場合)、私はまだ従事しなければならない

INSTALL_DIR="/where/it/goes" 
cmake .. \ 
    -DCMAKE_BUILD_TYPE=Release \ 
    -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \ 
    -DCMAKE_MACOSX_RPATH=ON \ 
    -DCMAKE_INSTALL_RPATH="$INSTALL_DIR/lib" 

すべての今して:しかし、私は、多くの場合、適切なcmake引数付きrpath関連の問題を解決することができますよインストール後にinstall_name_toolたとえば:

ここ
install_name_tool -change \ 
    @rpath/QtWidgets.framework/Versions/5/QtWidgets \ 
    /opt/dev/lib/qt/QtWidgets.framework/Versions/5/QtWidgets \ 
    "$INSTALL_DIR/lib/libvtkRenderingQt-7.1.1.dylib" 

libvtkRenderingQt-7.1.1.dylibは上記と同じCMakeのフラグで構築cmakeのプロジェクトから作成されたライブラリです。何らかの理由で、libvtkRenderingQtは上記のコマンドで修正されたQtフレームワークからリソースを見つけることができませんでした。擬似構文で:

<old-path>otool -L <file>示したものである
install_name_tool -change <old-path> <new-path> <file> 

...。あなたも同様の方法でinstall_name_toolrpathを変えることができることに注意してください(自分自身はまだこれを試していない):

install_name_tool -rpath <old-path> <new-path> <file> 

そしておそらく最後のノートを:私はローカルに自分自身を構築するツールをインストールすることを好みます(例えば、/opt/dev、またはいくつかのユーザディレクトリ)他のチャンネル(macport、brewなど)から取得した他のインストールを混乱させないようにします。これは、あなたの例のように、sudo操作を必要としないようにします。

関連する問題