12

そのため、すでにバイナリがある場合は、次のように「install_name_tool」を使用して、OSX に rpath を追加できます。

install_name_tool -add_rpath @executable_path/blah

xcode は、アプリケーション バンドルをビルドするときにこれを自動的に行います。

cmake では、これを使用して共有ライブラリの install_name を設定できることを知っています。

set_target_properties(nshared PROPERTIES BUILD_WITH_INSTALL_RPATH 1 INSTALL_NAME_DIR "@rpath")

私の質問は、rpath をバイナリに追加するのと同じことは何ですか?

(「なぜそれを行うのですか?」という質問については、Applications/ フォルダー内のいずれかのアプリで otool -l を確認すると、次のようなエントリを持つアプリがたくさん表示されます。

Load command 15
          cmd LC_RPATH
      cmdsize 36
         path @executable_path/../../Frameworks/

これは標準的な方法です。私はcmakeでそれをやろうとしているだけです)

4

1 に答える 1

20

POST_BUILD コマンドを使用しLC_RPATHて、ビルドされた実行可能ファイルにロード コマンドを追加できます。

add_custom_command(TARGET executable 
    POST_BUILD COMMAND 
    ${CMAKE_INSTALL_NAME_TOOL} -add_rpath "@executable_path/../../Frameworks/"
    $<TARGET_FILE:executable>)

この変数には、 Darwin でCMAKE_INSTALL_NAME_TOOLの実行可能ファイルへのパスが含まれています。install_name_tool

于 2012-12-01T19:26:50.600 に答える