バージョン 3.13 で新規追加。
target_link_directories(<target> <INTERFACE|PUBLIC|PRIVATE> ...])
任意のターゲットにリンクするときリンカーがライブラリを探索するパスを指定する。 各項目は、絶対パスまたは相対パスで、後者は現在のソースディレクトリからの相対パスとして解釈されます。
<target>
は、add_executable()
や add_library()
などのコマンドで作成され、ALIASターゲットであってはならない。
INTERFACE
、PUBLIC
、PRIVATE
は、それらに続く項目の範囲を指定するために必要なキーワードである。 PRIVATE
とPUBLIC
の項目は、<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
などの存在により)。