2016-10-20 34 views
5

MacOS上のCMakeでターゲット上に複数のRPATHディレクトリを設定するにはどうすればよいですか? Linuxでは、私たちは、コロンで区切られたリストを使用することができます:MacOSでMacOSでCMakeを使用して複数のRPATHディレクトリを設定する方法

set_target_properties(mytarget 
    PROPERTIES 
    INSTALL_RPATH "\$ORIGIN/../lib:\$ORIGIN/../thirdparty/lib" 
) 

を、我々は技術的には、コロン区切りのリストを追加することができますし、otool -lはそれを表示する必要がありますが、これらのディレクトリが検索されていません。

set_target_properties(mytarget 
    PROPERTIES 
    INSTALL_RPATH "@loader_path/../lib:@loader_path/../thirdparty/lib" 
) 

通常、MacOSで複数のRPATHディレクトリを使用する場合は、複数のリンカフラグを送信し、これらのフラグは別々にotool -lと表示されます。与え

g++-mp-4.7 mytarget.cpp -o mytarget -Wl,-rpath,@loader_path/../lib,-rpath,@loader_path/../thirdparty/lib 

Load command 15 
      cmd LC_RPATH 
     cmdsize 32 
     path @loader_path/../lib (offset 12) 
Load command 16 
      cmd LC_RPATH 
     cmdsize 48 
     path @loader_path/../thirdparty/lib (offset 12) 

は、どのように私はCMakeのと、この動作を再作成するかのような何か?

答えて

7

documentationによると、パスはコロンで区切りますが、セミコロンとすべきではありません。

set_target_properties(mytarget 
    PROPERTIES 
    INSTALL_RPATH "@loader_path/../lib;@loader_path/../thirdparty/lib" 
) 

あるいは、セパレータCMakeのお得な情報をできるようにコマンドsetを使用して:

set(MY_INSTALL_RPATH 
    "@loader_path/../lib" 
    "@loader_path/../thirdparty/lib" 
) 
set_target_properties(mytarget 
    PROPERTIES 
    INSTALL_RPATH "${MY_INSTALL_RPATH}" 
) 

編集:(コメントありがとうございましたTsyvarev)

あるいは、多値特性受け付けるコマンドset_property、使用:

set_property(
    TARGET mytarget 
    PROPERTY INSTALL_RPATH 
    "@loader_path/../lib" 
    "@loader_path/../thirdparty/lib" 
) 
+1

を..または多値特性を受け付け 'SET_PROPERTY(TARGET)を'使用。 – Tsyvarev

+0

@wasthishelpfulチャームのように働いた。ありがとう! – wyer33

関連する問題