Conan C++ : guide complet avec exemples pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Conan C++ : guide complet avec exemples pratiques

1. Qu'est-ce que Conan et pourquoi l'utiliser ?

Conan est un gestionnaire de paquets décentralisé et open source, conçu spécifiquement pour le langage C++. Il résout l'un des problèmes les plus épineux de l'écosystème C++ : la gestion des dépendances. Contrairement à d'autres langages (Python avec pip, JavaScript avec npm, Rust avec Cargo), le C++ a longtemps manqué d'un outil standard pour télécharger, compiler et intégrer automatiquement des bibliothèques tierces. Les développeurs devaient télécharger manuellement les sources, configurer les chemins d'inclusion, lier les bibliothèques et gérer péniblement les conflits de versions. Conan automatise entièrement ce processus.

Conan prend en charge tous les principaux systèmes d'exploitation (Windows, Linux, macOS) et compilateurs (GCC, Clang, MSVC, MinGW). Il s'intègre avec différents systèmes de build : CMake, MSBuild, Makefiles, SCons, Bazel, etc. Les paquets Conan peuvent être distribués sous forme de code source (Conan les compile alors pour votre plateforme) ou sous forme de binaires pré-compilés. Cela vous fait gagner des heures, en particulier sur les grands projets avec des dizaines de dépendances.

La fonctionnalité clé de Conan est son modèle de profils. Vous pouvez définir un profil pour chaque plateforme/compilateur (par exemple, "clang-14-release-x86_64" ou "msvc-2022-debug-x86"). Conan sélectionne ou compile automatiquement les paquets compatibles avec votre profil. Cela en fait un outil indispensable pour le développement cross-plateforme et les pipelines CI/CD.

2. Installation

Conan est écrit en Python et s'installe via pip. Il est recommandé de l'installer dans un environnement virtuel (venv) pour éviter les conflits avec les paquets système Python.

# Installation via pip (recommandé dans un environnement virtuel)
python -m pip install conan

# Vérification de l'installation
conan --version

# Mise à jour vers la dernière version
python -m pip install --upgrade conan

Après l'installation, il est conseillé de configurer le dépôt distant (remote) par défaut — ConanCenter. Il est déjà ajouté par défaut, mais vous pouvez le vérifier avec cette commande :

conan remote list

Si ConanCenter est absent, ajoutez-le :

conan remote add conancenter https://center.conan.io

3. Démarrage rapide — un exemple fonctionnel minimal

Créons un projet simple qui utilise les bibliothèques fmtlib (formatage de chaînes) et zlib (compression de données).

Étape 1 : Structure du projet

mkdir my_conan_project
cd my_conan_project
mkdir src

Étape 2 : Fichier conanfile.txt

[requires]
fmt/10.2.1
zlib/1.3.1

[generators]
CMakeDeps
CMakeToolchain

[layout]
cmake_layout

Étape 3 : CMakeLists.txt

cmake_minimum_required(VERSION 3.15)
project(MyConanProject CXX)

find_package(fmt REQUIRED)
find_package(ZLIB REQUIRED)

add_executable(my_app src/main.cpp)
target_link_libraries(my_app PRIVATE fmt::fmt ZLIB::ZLIB)

Étape 4 : src/main.cpp

#include <fmt/core.h>
#include <zlib.h>
#include <iostream>

int main() {
    // Utilisation de fmt
    fmt::print("Bonjour depuis Conan ! Version : {}\n", FMT_VERSION);

    // Utilisation de zlib
    std::cout << "Version de zlib : " << zlibVersion() << std::endl;

    // Exemple simple de compression
    const char* data = "Bonjour, Conan ! Cette chaîne va être compressée.";
    uLong source_len = strlen(data) + 1;
    uLong dest_len = compressBound(source_len);
    char* compressed = new char[dest_len];

    int ret = compress(reinterpret_cast(compressed), &dest_len,
                       reinterpret_cast(data), source_len);
    if (ret == Z_OK) {
        fmt::print("Compression réussie ! Original : {} octets -> Comp                    

Recommendations