Aracılığıyla paylaş


Öğretici: CMake ile paketleri yükleme ve kullanma

Bu öğreticide, kitaplığı CMake ve vcpkg ile kullanan fmt bir C++ "Merhaba Dünya" programının nasıl oluşturulacağı gösterilmektedir. Bağımlılıkları yükleyecek, basit bir uygulama yapılandıracak, derleyecek ve çalıştıracaksınız.

Önkoşullar

Not

Windows kullanıcıları için Visual Studio'nun MSVC'si (Microsoft Visual C++ Derleyicisi), C++ geliştirme için gerekli derleyicidir.

1 - vcpkg ayarlama

  1. Depoyu kopyalama

    İlk adım, vcpkg deposunu GitHub'dan kopyalamaktır. Depo, vcpkg yürütülebilir dosyasını ve vcpkg topluluğu tarafından tutulan seçilmiş açık kaynak kitaplıklarının kayıt defterini almaya yönelik betikler içerir. Bunu yapmak için şunu çalıştırın:

    git clone https://github.com/microsoft/vcpkg.git
    

    Vcpkg tarafından seçilen kayıt defteri, 2.000'den fazla açık kaynak kitaplık kümesidir. Bu kitaplıklar vcpkg'nin sürekli tümleştirme işlem hatları tarafından birlikte çalışacak şekilde doğrulanmıştır. vcpkg deposu bu kitaplıkların kaynak kodunu içermese de, bunları derlemek ve sisteminize yüklemek için tarifler ve meta veriler içerir.

  2. Bootstrap betiğini çalıştırma

    Artık vcpkg deposunu kopyaladığınıza göre dizine vcpkg gidin ve bootstrap betiğini yürütebilirsiniz:

    cd vcpkg && bootstrap-vcpkg.bat
    
    cd vcpkg; .\bootstrap-vcpkg.bat
    
    cd vcpkg && ./bootstrap-vcpkg.sh
    

    Bootstrap betiği önkoşul denetimleri gerçekleştirir ve vcpkg yürütülebilir dosyasını indirir.

    İşte hepsi bu! vcpkg ayarlandı ve kullanıma hazır.

2 - Projeyi ayarlama

  1. Ortam değişkenini VCPKG_ROOT yapılandırın.

    export VCPKG_ROOT=/path/to/vcpkg
    export PATH=$VCPKG_ROOT:$PATH
    

    Not

    komutunu kullanarak export ortam değişkenlerini ayarlamak yalnızca geçerli kabuk oturumunu etkiler. Bu değişikliği oturumlar arasında kalıcı hale getirmek için komutunu kabuğunuzun profil betiğine (ör. ~/.bashrc veya ~/.zshrc) ekleyinexport.

    set "VCPKG_ROOT=C:\path\to\vcpkg"
    set PATH=%VCPKG_ROOT%;%PATH%
    

    Not

    Ortam değişkenlerini bu şekilde ayarlamak yalnızca geçerli terminal oturumunu etkiler. Bu değişiklikleri tüm oturumlarda kalıcı hale getirmek için Bunları Windows Sistem Ortamı Değişkenleri paneli aracılığıyla ayarlayın.

    $env:VCPKG_ROOT = "C:\path\to\vcpkg"
    $env:PATH = "$env:VCPKG_ROOT;$env:PATH"
    

    Not

    Ortam değişkenlerini bu şekilde ayarlamak yalnızca geçerli terminal oturumunu etkiler. Bu değişiklikleri tüm oturumlarda kalıcı hale getirmek için Bunları Windows Sistem Ortamı Değişkenleri paneli aracılığıyla ayarlayın.

    Ayar VCPKG_ROOT , vcpkg'ye vcpkg örneğinizin nerede olduğunu bildirir. Bunu eklemek PATH , vcpkg komutlarını doğrudan kabuktan çalıştırabilmenizi sağlar.

  2. Proje dizinini oluşturun.

    mkdir helloworld && cd helloworld
    

3 - Bağımlılıkları ve proje dosyalarını ekleme

  1. Bildirim dosyasını oluşturun ve bağımlılığı ekleyin fmt .

    İlk olarak, komutunu dizinin içinden helloworld çalıştırarak vcpkg new projenizin dizininde bir bildirim dosyası (vcpkg.json) oluşturun:

    vcpkg new --application
    

    Ardından bağımlılığı ekleyin fmt :

    vcpkg add port fmt
    

    Aşağıdaki vcpkg.json gibi görünmelidir:

    {
        "dependencies": [
            "fmt"
        ]
    }
    

    Bu, bildirim dosyanızdır. vcpkg, hangi bağımlılıkların yükleneceğini öğrenmek için bildirim dosyasını okur ve projenizin gerektirdiği bağımlılıkları sağlamak için CMake ile tümleşir.

    Varsayılan vcpkg-configuration.json dosya, projenizin kullanması gereken en düşük bağımlılık sürümlerini belirterek temel kısıtlamalar sunar. Bu dosyayı değiştirmek bu öğreticinin kapsamı dışında olsa da, projenizin bağımlılıkları için sürüm kısıtlamaları tanımlamada önemli bir rol oynar. Bu nedenle, bu öğretici için kesinlikle gerekli olmasa da, farklı geliştirme ortamlarında sürüm tutarlılığı sağlamak için kaynak denetiminize eklemeniz vcpkg-configuration.json iyi bir uygulamadır.

  2. Proje dosyalarını oluşturun.

    Aşağıdaki içeriğe CMakeLists.txt sahip dosyayı oluşturun:

    cmake_minimum_required(VERSION 3.10)
    
    project(HelloWorld)
    
    find_package(fmt CONFIG REQUIRED)
    
    add_executable(HelloWorld helloworld.cpp)
    
    target_link_libraries(HelloWorld PRIVATE fmt::fmt)
    

    Şimdi dosyadaki her satırın CMakeLists.txt ne yaptığını görelim:

    • cmake_minimum_required(VERSION 3.10): Projeyi oluşturmak için gereken en düşük CMake sürümünün 3.10 olduğunu belirtir. Sisteminizde yüklü olan CMake sürümü bundan düşükse bir hata oluşturulur.
    • project(HelloWorld): Projenin adını "HelloWorld" olarak ayarlar.
    • find_package(fmt CONFIG REQUIRED): CMake yapılandırma dosyasını kullanarak kitaplığı arar fmt . anahtar REQUIRED sözcüğü, paket bulunamazsa bir hata oluşturulmasını sağlar.
    • add_executable(HelloWorld helloworld.cpp): Kaynak dosyasından helloworld.cppoluşturulan "HelloWorld" adlı yürütülebilir bir hedef ekler.
    • target_link_libraries(HelloWorld PRIVATE fmt::fmt): Yürütülebilir dosyanın HelloWorld kitaplığa karşı fmt bağlanması gerektiğini belirtir. PRIVATE anahtar sözcüğü, yalnızca derleme HelloWorld için gerekli olduğunu ve diğer bağımlı projelere yayılmaması gerektiğini belirtirfmt.

    Aşağıdaki içeriğe helloworld.cpp sahip dosyayı oluşturun:

    #include <fmt/core.h>
    
    int main()
    {
        fmt::print("Hello World!\n");
        return 0;
    }
    

    Bu helloworld.cpp dosyada <fmt/core.h> , üst bilgi kitaplığını fmt kullanmak için eklenmiştir. İşlev main() daha sonra fmt::print() konsola "Merhaba Dünya!" iletisinin çıkışını çağırır.

4 - Projeyi derleme ve çalıştırma

  1. CMake yapılandırmasını çalıştırma

    CMake, vcpkg'nin özel araç zincirini kullanacak şekilde ayarlandığında vcpkg CMAKE_TOOLCHAIN_FILE tarafından yüklenen kitaplıkları otomatik olarak bağlayabilir. Bu, CMake ön ayarları dosyaları kullanılarak derlenebilir.

    Dizinin içinde helloworld aşağıdaki dosyaları oluşturun:

    CMakePresets.json

    {
      "version": 2,
      "configurePresets": [
        {
          "name": "vcpkg",
          "generator": "Ninja",
          "binaryDir": "${sourceDir}/build",
          "cacheVariables": {
            "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
          }
        }
      ]
    }
    

    CMakeUserPresets.json

    {
        "version": 2,
        "configurePresets": [
          {
            "name": "default",
            "inherits": "vcpkg",
            "environment": {
              "VCPKG_ROOT": "<path to vcpkg>"
            }
          }
        ]
      }
    

    Dosya, CMakePresets.json değişkeni ayarlayan CMAKE_TOOLCHAIN_FILE "vcpkg" adlı tek bir ön ayar içerir. Dosya, CMakeUserPresets.json ortam değişkenini VCPKG_ROOT yerel vcpkg yüklemenizin bulunduğu mutlak yola işaret eder. Sürüm denetim sistemlerinin denetlenmemesi CMakeUserPresets.json önerilir.

    Son olarak, CMake kullanarak derlemeyi yapılandırın:

    cmake --preset=default
    
  2. Projeyi derleme

    Çalıştır:

    cmake --build build
    
  3. Uygulamayı çalıştırma

    Son olarak, uygulamanızın çalıştığını görmek için yürütülebilir dosyayı çalıştırın:

    ./build/HelloWorld
    
    Hello World!
    
    .\build\HelloWorld.exe
    
    Hello World!
    

Sonraki adımlar