add_library¶

Bibliotecas normais¶

add_library(<name> )

Adiciona um alvo de biblioteca chamado <name> a ser construído a partir dos arquivos fonte listados na invocação do comando. (Os ficheiros-fonte podem ser omitidos aqui se forem adicionados mais tarde usando target_sources().) O <name>corresponde ao nome do alvo lógico e deve ser globalmente único com o projectoina. O nome real do arquivo da biblioteca construída é construído com base em convenções da plataforma nativa (como lib<name>.a ou <name>.lib).

STATIC, SHARED, ou MODULE pode ser dado para especificar o tipo de biblioteca a ser criada. STATIC bibliotecas são arquivos de arquivos de objetos para uso ao ligar outros alvos. SHARED as bibliotecas são vinculadas dinamicamente e carregadas em tempo de execução. MODULE bibliotecas são plugins que não são ligados a outros alvos mas podem ser carregados dinamicamente em tempo de execução usando a funcionalidade tipo dlopen. Se nenhum tipo é dado explicitamente o tipo é STATIC ou SHARED baseado se o valor atual da variável BUILD_SHARED_LIBS é ON. Para SHARED eMODULE bibliotecas o POSITION_INDEPENDENT_CODE targetproperty é definido para ON automaticamente.A SHARED ou STATIC biblioteca pode ser marcada com a propriedade FRAMEWORKtarget para criar um macOS Framework.

Se uma biblioteca não exporta nenhum símbolo, ela não deve ser declarada como umaSHARED biblioteca. Por exemplo, uma DLL de recursos do Windows ou uma C++/CLIDLL gerenciada que não exporta símbolos não gerenciados precisaria ser uma biblioteca MODULE. Isto porque o CMake espera que uma biblioteca SHARED tenha sempre uma biblioteca de importação associada no Windows.

Por padrão o arquivo da biblioteca será criado na árvore de compilação, correspondendo ao diretório da árvore de origem na qual o comando foi invocado. Veja a documentação do arquivo ARCHIVE_OUTPUT_DIRECTORY,LIBRARY_OUTPUT_DIRECTORY, eRUNTIME_OUTPUT_DIRECTORY propriedades de destino para alterar esta localização. Veja a documentação da propriedade OUTPUT_NAME targetproperty para alterar a parte <name> do nome do arquivo final.

Se EXCLUDE_FROM_ALL for dada a propriedade correspondente será definida no destino criado. Veja a documentação da propriedade EXCLUDE_FROM_ALLtarget para mais detalhes.

Definir argumentos de fonte para add_library pode usar “expressões do gerador” com a sintaxe $<...>. Veja a cmake-generator-expressions(7)manual para as expressões disponíveis. Veja o cmake-buildsystem(7)manual para saber mais sobre a definição de propriedades do sistema builds.

.

Deixe uma resposta

O seu endereço de email não será publicado.