Por que usar add_library ({tgt} IMPORTED) versus target_link_libraries (-l {.so | .a})?
Qual é o objetivo de usar a declaração:
add_library(<tgt> [SHARED|STATIC] IMPORTED)
Pelo que descobri, mesmo se você criar um destino de biblioteca importado acima, ainda precisará especificar o local específico do arquivo .so ou .a real. Isso levaria pelo menos três comandos cmake para vincular a um executável e o compilador ainda não pesquisaria automaticamente os diretórios de inclusão comuns no seu sistema operacional.
Exemplo:código cmake para vincular lib importado
A partir da documentação do CMake, entendo que existem realmente três maneiras de vincular uma biblioteca que não foi criada como destino em um subprojeto do aplicativo / biblioteca geral.
Documentação do CMake target_link_libraries ()
Usando um pacote CMake para um dos scripts de pacote enviados.Usando um sinalizador de vinculador:
target_link_libraries(<tgt> [SHARED|STATIC|...] -lncursesw)
Ou usando o método da biblioteca IMPORTED (exibido no código na parte superior).Uma grande diferença ao usar o segundo método é que ele usa apenas uma única linha de código e pesquisará todos os diretórios de inclusão predefinidos do seu compilador no sistema operacional. Alguém poderia me ajudar a entender por que o método add_library () é usado?
Postagens Realizadas Adicionais de SO: