Carregando는 C++에 의존하며 CMake를 사용합니다.
4805 단어 productivitycppbeginners
pip
, cargo
, npm
6ou, yarn
6ou Contudo, quando se trata de linguagens como C e C++ isso é um pouco diferente, não existe um único meio padronizado de obter bibliotecas externas. Pensando nisso, pensei em escrever esse post mostrando como automatizo a obtenção de bibliotecas de repositórios Git remotos usando o CMake.Existem soluções criadas pela comunidade como o
conan
e o
vcpkg
mas elas carregam outra dependência na máquina e
requerem que a biblioteca que você quer esteja indexada por eles.
모듈로 FetchContent
O CMake é sistema de build que atomatiza a geração de
Makefile
s que definem o processo de compilação de um projeto de codigo-fonte. Ele fornece vários modulos que ajudam na configuração de várias formas. Um desses modulos é o FetchContent , que ajuda a obter conteúdo externo em tempo de configuração, ou seja, quando o CMake está gerando o Makefile.É basstante simples de usá-lo, no exemplo adicionamos o GoogleTest ao nosso projeto:
include(FetchContent)
FetchContent_Declare(GoogleTest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
)
FetchContent_MakeAvailable(GoogleTest)
Depois disso, temos o projeto do GoogleTest bem como suas bibliotecas acessíveis em tempo de configuração, então podemos vincular qualquer executável/biblioteca com o GoogleTest, por exemplo:
add_executable(mytests "test/main.cpp" "test/awesome_test.cpp")
target_link_libraries(mytests gtest_main)
Criando uma função CMake
Para automatizar esse processo, eu costumo criar uma função simples que concentra o codigo que usa o FetchContent, isso torna o script CMake mais legível e fácil de adicionar novasdependências.
function(GET_DEPENDENCY D_NAME D_URL D_TAG)
message(CHECK_START "Configuring ${D_NAME}")
FetchContent_Declare(${D_NAME}
GIT_REPOSITORY ${D_URL}
GIT_TAG ${D_TAG}
)
FetchContent_MakeAvailable(${D_NAME})
endfunction()
Assim consigo usar a funcção
get_dependecy
passando o nome, a URL e a versão (ou tag) da biblioteca.get_dependency(GoogleTest "https://github.com/google/googletest.git" master)
Para acición maisdependências...
get_dependency(spdlog "https://github.com/gabime/spdlog" v1.8.5)
get_dependency(CLI11 "https://github.com/CLIUtils/CLI11" v1.9.1)
get_dependency(GoogleTest "https://github.com/google/googletest" master)
사전 설정에 따라 사전에 제거할 수 있으며 Github에서 사용할 수 있습니다. 이 프로젝트는 승인을 받기 위해 허가를 받기 위해 필요한 요건을 충족해야 합니다. Também traz um benefício para o uso CI(지속적 통합).
Reference
이 문제에 관하여(Carregando는 C++에 의존하며 CMake를 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ronalddpinho/carregando-dependencias-em-projetos-c-usando-o-cmake-111p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)