cmake gera bibliotecas de terceiros

cmake gera bibliotecas de terceiros

Crie um arquivo CMakeLists.txt: esse arquivo deve conter todas as informações necessárias para criar a biblioteca, como os arquivos de código-fonte da biblioteca, os caminhos do arquivo de cabeçalho, as bibliotecas vinculadas etc. Aqui está um exemplo:

cmake_minimum_required(VERSION 3.0)

project(MyLibrary)

set(SOURCES src/file1.cpp src/file2.cpp)

include_directories(include)

add_library(MyLibrary STATIC ${
    
    SOURCES})

Construa a biblioteca: Construa a biblioteca ubuntu a partir da linha de comando com:

cmake .
make

Isso irá gerar um arquivo de biblioteca estático chamado "libMyLibrary.a".

Use o comando make install para instalar a biblioteca gerada ou arquivo executável, você precisa adicionar as instruções de instalação relevantes em CMakeLists.txt.

Normalmente, as seguintes diretivas são adicionadas ao CMakeLists.txt para instalar bibliotecas ou executáveis:

# 指定库的输出路径
set(CMAKE_INSTALL_PREFIX /usr/local)

# 安装可执行文件
install(TARGETS myexecutable DESTINATION bin)

# 安装库文件
install(TARGETS mylibrary DESTINATION lib)

# 安装头文件
install(DIRECTORY include/ DESTINATION include)

# 安装其他文件
install(FILES myfile.txt DESTINATION share/myproject)

Instale a biblioteca: Instale a biblioteca com o comando:

make install

Este comando instala o arquivo de biblioteca em um diretório do sistema para que outros programas possam usá-lo.

Observe que o processo de criação de bibliotecas de terceiros pode variar dependendo do tipo e uso da biblioteca. Além disso, pode ser necessário personalizar o processo de construção da biblioteca para diferentes sistemas operacionais e plataformas. Portanto, o processo de construção exato pode variar de caso para caso.

Para permitir que a biblioteca gerada por você seja pesquisada usando o comando find_package, as seguintes etapas são necessárias:

Em CMakeLists.txt, defina seu próprio arquivo de configuração de pacote, como MyLibraryConfig.cmake. Este arquivo deve conter as seguintes informações:

set(MyLibrary_INCLUDE_DIRS /path/to/mylibrary/include)
set(MyLibrary_LIBRARIES /path/to/mylibrary/lib/libMyLibrary.a)

# Export the target
export(TARGETS MyLibrary FILE MyLibraryTargets.cmake)

# Create the MyLibraryConfig.cmake file
configure_file(MyLibraryConfig.cmake.in
    "${CMAKE_CURRENT_BINARY_DIR}/MyLibraryConfig.cmake"
    @ONLY
)

# Install the files
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/MyLibraryConfig.cmake"
              "${CMAKE_CURRENT_BINARY_DIR}/MyLibraryTargets.cmake"
        DESTINATION lib/cmake/MyLibrary
)

Isso definirá as variáveis ​​MyLibrary_INCLUDE_DIRS e MyLibrary_LIBRARIES que serão usadas pelo comando find_package para localizar e vincular bibliotecas. Além disso, esse arquivo define as informações de exportação e instalação do destino.

Copie o arquivo MyLibraryConfig.cmake.in no mesmo diretório que MyLibraryConfig.cmake e inclua o seguinte nele:

# Check if the system has the package
find_package(MyLibrary QUIET)

# If the system doesn't have the package, use the local build
if (NOT MyLibrary_FOUND)
    set(MyLibrary_INCLUDE_DIRS "@PACKAGE_INCLUDE_DIRS@")
    set(MyLibrary_LIBRARIES "@PACKAGE_LIBRARIES@")
endif ()

# Export the package
include(CMakeFindDependencyMacro)
find_dependency(MyLibrary REQUIRED)


Este arquivo tentará primeiro localizar um pacote instalado pelo sistema usando o comando find_package e, se não for encontrado, usará um pacote criado localmente.

Compile e instale a biblioteca.
Depois de concluir as etapas acima, você pode usar o comando find_package(MyLibrary) para localizar e usar a biblioteca gerada automaticamente no projeto CMake.

O método de usar Find.cmake e Config.cmake é essencialmente integrar uma biblioteca de terceiros ao projeto CMake. Eles diferem em como são encontrados e configurados.

O método de uso de Find.cmake precisa escrever manualmente um módulo Find. Este módulo precisa implementar o comando find_package() e especificar o caminho de pesquisa da biblioteca, o nome da biblioteca, o caminho do arquivo de cabeçalho, o caminho do arquivo da biblioteca e outras informações. Use o comando find_package() no projeto para chamar este módulo para localizá-lo.

O método de uso do Config.cmake precisa gerar um arquivo Config.cmake durante o processo de compilação do CMake da biblioteca de terceiros, que contém as informações relevantes da biblioteca, como o caminho do arquivo de cabeçalho e o caminho da biblioteca arquivo. Em seguida, use o comando find_package() no projeto CMake para localizar a biblioteca, o CMake procurará um arquivo chamado YourLibraryConfig.cmake no caminho do módulo CMake e o carregará e, em seguida, definirá automaticamente as variáveis ​​CMake correspondentes.

Por outro lado, o método de uso do Config.cmake requer mais trabalho de configuração e um arquivo Config.cmake precisa ser gerado durante o processo de compilação CMake da biblioteca de terceiros, e esse arquivo precisa definir corretamente as variáveis ​​CMake correspondentes. O método de usar Find.cmake precisa escrever manualmente um módulo Find, mas a escrita deste módulo é relativamente simples, só precisa definir algumas variáveis ​​básicas e informações de caminho. Portanto, qual método escolher depende principalmente das características da biblioteca de terceiros e das preferências pessoais. Da próxima vez, vou resolver o método de find.cmake para encontrar a biblioteca.

Acho que você gosta

Origin blog.csdn.net/m0_49302377/article/details/130313466
Recomendado
Clasificación