Conan C++: पूर्ण गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Conan C++: पूर्ण गाइड उदाहरणों के साथ

1. यह क्या है और इसकी आवश्यकता क्यों है

Conan एक ओपन-सोर्स, डीसेंट्रलाइज्ड पैकेज मैनेजर है जो C++ भाषा के लिए डिज़ाइन किया गया है। यह C++ इकोसिस्टम की सबसे बड़ी समस्याओं में से एक को हल करता है: डिपेंडेंसी मैनेजमेंट। अन्य भाषाओं (Python के लिए pip, JavaScript के लिए npm, Rust के लिए Cargo) के विपरीत, C++ के पास लंबे समय तक थर्ड-पार्टी लाइब्रेरीज़ को ऑटोमैटिकली डाउनलोड, बिल्ड और इंटीग्रेट करने का कोई स्टैंडर्ड टूल नहीं था। डेवलपर्स को मैन्युअली सोर्स कोड डाउनलोड करना, include-पाथ सेट करना, लाइब्रेरीज़ को लिंक करना और वर्जन कॉन्फ्लिक्ट्स को हल करना पड़ता था। Conan इस पूरी प्रक्रिया को ऑटोमेट करता है।

Conan सभी प्रमुख ऑपरेटिंग सिस्टम (Windows, Linux, macOS) और कंपाइलर (GCC, Clang, MSVC, MinGW) को सपोर्ट करता है। यह विभिन्न बिल्ड सिस्टम के साथ काम कर सकता है: CMake, MSBuild, Makefiles, SCons, Bazel और अन्य। Conan में पैकेज सोर्स कोड के रूप में (तब Conan उन्हें आपके प्लेटफॉर्म के लिए बिल्ड करेगा) या रेडी-मेड बाइनरी फाइलों के रूप में वितरित किए जा सकते हैं। यह बड़े प्रोजेक्ट्स में दर्जनों डिपेंडेंसी के साथ घंटों का समय बचाता है।

Conan की मुख्य विशेषता इसका प्रोफाइल मॉडल है। आप प्रत्येक प्लेटफॉर्म/कंपाइलर के लिए एक प्रोफाइल परिभाषित कर सकते हैं (जैसे, "clang-14-release-x86_64" या "msvc-2022-debug-x86")। Conan आपके प्रोफाइल के अनुकूल पैकेजों को ऑटोमैटिकली चुनेगा या बिल्ड करेगा। यह इसे क्रॉस-प्लेटफॉर्म डेवलपमेंट और CI/CD पाइपलाइनों के लिए एक अपरिहार्य टूल बनाता है।

2. इंस्टॉलेशन

Conan Python में लिखा गया है और pip के माध्यम से इंस्टॉल किया जाता है। सिस्टम Python पैकेजों के साथ कॉन्फ्लिक्ट से बचने के लिए इसे वर्चुअल एनवायरनमेंट (venv) में इंस्टॉल करने की सलाह दी जाती है।

# pip के माध्यम से इंस्टॉलेशन (वर्चुअल एनवायरनमेंट में अनुशंसित)
python -m pip install conan

# इंस्टॉलेशन की जांच करें
conan --version

# नवीनतम वर्जन में अपडेट करें
python -m pip install --upgrade conan

इंस्टॉलेशन के बाद, डिफ़ॉल्ट रिमोट रिपॉजिटरी (remote) — ConanCenter — को सेट करने की सलाह दी जाती है। यह डिफ़ॉल्ट रूप से पहले से जुड़ा होता है, लेकिन आप इस कमांड से जांच सकते हैं:

conan remote list

यदि ConanCenter मौजूद नहीं है, तो इसे जोड़ें:

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

3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण

एक सरल प्रोजेक्ट बनाते हैं जो fmtlib (स्ट्रिंग फ़ॉर्मेटिंग) और zlib (डेटा कंप्रेशन) लाइब्रेरी का उपयोग करता है।

चरण 1: प्रोजेक्ट संरचना

mkdir my_conan_project
cd my_conan_project
mkdir src

चरण 2: conanfile.txt फ़ाइल

[requires]
fmt/10.2.1
zlib/1.3.1

[generators]
CMakeDeps
CMakeToolchain

[layout]
cmake_layout

चरण 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)

चरण 4: src/main.cpp

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

int main() {
    // fmt का उपयोग
    fmt::print("Hello from Conan! Version: {}\n", FMT_VERSION);

    // zlib का उपयोग
    std::cout << "zlib version: " << zlibVersion() << std::endl;

    // कंप्रेशन का सरल उदाहरण
    const char* data = "Hello, Conan! This string will be compressed.";
    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 successful! Original: {} bytes -> Compressed: {} bytes\n", source_len, dest_len);
    }

    delete[] compressed;
    return 0;
}

अनुशंसाएँ