Novo na versão 3.13.
Adicionar diretórios de links a um alvo.
target_link_directories(<target> <INTERFACE|PUBLIC|PRIVATE> ...])
Especifica os caminhos nos quais o linker deve procurar bibliotecas ao ligar um determinado alvo. Cada item pode ser um caminho absoluto ou relativo, com este último sendo interpretado como relativo ao diretório-fonte atual. Estes itens serão adicionados ao comando link.
Os nomeados <target>
devem ter sido criados por um comando como add_executable()
ou add_library()
e não devem ser anALIAS target.
Os INTERFACE
, PUBLIC
e PRIVATE
palavras-chave são necessárias para especificar o escopo dos itens que os seguem. PRIVATE
ePUBLIC
os itens irão preencher os LINK_DIRECTORIES
propriedade de <target>
. PUBLIC
e INTERFACE
itens irão preencher a propriedadeINTERFACE_LINK_DIRECTORIES
de <target>
(suporte apenas a alvos importados INTERFACE
itens). Cada item especifica um diretório de links e será convertido para um caminho absoluto, se necessário, antes de adicioná-lo à propriedade relevante. Repetidas chamadas para o mesmo <target>
anexar itens na ordem chamada.
Se BEFORE
for especificado, o conteúdo será preposto à propriedade relevante ao invés de ser anexado.
Argumentos para target_link_directories
podem usar “expressões geradoras” com a sintaxe $<...>
. Veja o manual cmake-generator-expressions(7)
para ver as expressões disponíveis. Veja o cmake-buildsystem(7)
manual para saber mais sobre a definição de propriedades do buildsystem.
Nota
Este comando raramente é necessário e deve ser evitado onde há outras escolhas. O comando find_library()
fornece o caminho completo, que pode ser usado diretamente em chamadas para target_link_libraries()
.Situações onde um caminho de busca de biblioteca pode ser necessário incluem:
-
Geradores de projetos como o Xcode onde o usuário pode mudar a arquitetura alvo no momento da compilação, mas um caminho completo para uma biblioteca não pode ser usado porque ele fornece apenas uma arquitetura (i.e. não é um binário universal).
-
As bibliotecas podem ter outras dependências de bibliotecas privadas que esperam ser encontradas através de mecanismos
RPATH
, mas alguns linkers não são capazes de decodificar completamente esses caminhos (por exemplo, devido à presença de coisas como$ORIGIN
).