Neste repositório tem-se um pequeno exemplo sobre como organizar o projeto de uma biblioteca C++ usando o CMake.
Baixe o código presente neste repositório:
git clone https://github.com/emersonmello/libsaudacaocpp.git
cd libsaudacaocpp
cmake -S . -B build
Para construir o projeto:
cmake --build build
Serão gerados os seguintes arquivos:
- Biblioteca estática (archive)
build/src/libsaudacao.a
- Aplicação demo
build/exemplo/demo
Caso queira instalar a biblioteca compilada e os arquivos de cabeçalho, faça:
cmake --install build --strip --config Release
Se está escrevendo um projeto com CMake, é possível baixar e usar esta biblioteca por meio do FetchContent. Inclua as linhas abaixo dentro do arquivo CMakeLists.txt
de seu projeto:
include(FetchContent)
FetchContent_Declare(saudacaocpp
GIT_REPOSITORY https://github.com/emersonmello/libsaudacaocpp.git
GIT_TAG 0.1.0
)
FetchContent_MakeAvailable(saudacaocpp)
# considerando que appexemplo é o nome do alvo (target)
target_link_libraries(appexemplo PRIVATE saudacaocpp)
Abaixo um exemplo completo do arquivo CMakeLists.txt
para uma aplicação que faz uso desta biblioteca.
cmake_minimum_required(VERSION 3.14)
project(appexemplo VERSION 0.1.0)
add_executable(appexemplo main.cpp)
target_compile_features(appexemplo PRIVATE cxx_std_17)
include(FetchContent)
FetchContent_Declare(saudacaocpp
GIT_REPOSITORY https://github.com/emersonmello/libsaudacaocpp.git
GIT_TAG 0.1.0
)
FetchContent_MakeAvailable(saudacaocpp)
target_link_libraries(appexemplo PRIVATE saudacaocpp)
E abaixo o código do arquivo main.cpp
:
#include <saudacao/saudacao.hh>
#include <iostream>
int main(int argc, char const **argv) {
std::string msg = "mundo";
if (argc == 2){
msg = argv[1];
}
saudacao::Saudacao teste(msg);
teste.ola_mundo();
}