target_link_directories¶

バージョン 3.13 で新規追加。

target_link_directories(<target> <INTERFACE|PUBLIC|PRIVATE> ...])

任意のターゲットにリンクするときリンカーがライブラリを探索するパスを指定する。 各項目は、絶対パスまたは相対パスで、後者は現在のソースディレクトリからの相対パスとして解釈されます。

<target> は、add_executable()add_library() などのコマンドで作成され、ALIASターゲットであってはならない。

INTERFACEPUBLICPRIVATE は、それらに続く項目の範囲を指定するために必要なキーワードである。 PRIVATEPUBLICの項目は、<target>LINK_DIRECTORIESプロパティに入力されます。 PUBLIC および INTERFACE 項目は、<target>INTERFACE_LINK_DIRECTORIES プロパティに入ります (IMPORTED ターゲットは INTERFACE 項目のみをサポート)。各項目はリンク ディレクトリを指定し、必要に応じて絶対パスに変換されてから関連プロパティに追加されます。

BEFORE が指定された場合、コンテンツは追加される代わりに、関連するプロパティにプリペンドされます。 利用可能な式は cmake-generator-expressions(7) のマニュアルを参照してください。

Note

このコマンドはほとんど必要なく、他の選択肢がある場合は避けるべきでしょう。 可能であれば、ライブラリに完全な絶対パスを渡すことをお勧めします。find_library() コマンドはフルパスを提供し、一般に target_link_libraries() の呼び出しで直接使用できます。ライブラリ検索パスが必要となる状況には、次のようなものがあります。

  • Libraries 自体が、RPATH メカニズムで見つかることを期待する他のプライベートなライブラリ依存性を持っているかもしれませんが、一部のリンカーはこれらのパスを完全にデコードできません (たとえば、$ORIGIN などの存在により)。

  • コメントを残す

    メールアドレスが公開されることはありません。