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 FRAMEWORK
target 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_ALL
target 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.
.