Öğretici: Visual Studio'da CMake ile paketleri yükleme ve kullanma

Bu öğreticide, CMake, vcpkg ve Visual Studio ile kitaplığını 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

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 - Visual Studio projesini ayarlama

  1. Visual Studio projesini oluşturma

    • "CMake Project" şablonunu kullanarak Visual Studio'da yeni proje oluşturma

    yeni bir CMake projesi oluşturma

    Visual Studio'da yeni bir CMake projesi oluşturmayı gösteren Visual Studio kullanıcı arabiriminin ekran görüntüsü

    • Projenize "helloworld" adını verin
    • "Çözümü ve projeyi aynı dizine yerleştir" kutusunu işaretleyin.
    • "Oluştur" düğmesine tıklayın

    CMake projenizi adlandırma

    CMake projenizi adlandırmak ve "oluştur" düğmesine tıklamak için Visual Studio kullanıcı arabiriminin ekran görüntüsü.

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

    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.

    Visual Studio'da yerleşik Geliştirici PowerShell penceresini açın.

    yerleşik geliştirici powershell'ini açma

    Yerleşik PowerShell geliştirici penceresi için Visual Studio kullanıcı arabiriminin ekran görüntüsü

    Aşağıdaki komutları çalıştırın:

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

    ortam değişkenlerinizi ayarlama

    VCPKG_ROOT ayarlamayı ve PATH'e eklemeyi gösteren yerleşik PowerShell geliştirici penceresi için Visual Studio kullanıcı arabiriminin ekran görüntüsü.

    Visual Studio'da Geliştirici komut istemini açın.

    Visual Studio geliştirici komut istemini açma.

    Geliştirici komut istemi için Visual Studio kullanıcı arabiriminin ekran görüntüsü.

    Aşağıdaki komutları çalıştırın:

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

    ortam değişkenlerinizi ayarlama

    VCPKG_ROOT ayarlamayı ve PATH'e eklemeyi gösteren Visual Studio geliştirici komut isteminin ekran görüntüsü.

    Ayar VCPKG_ROOT , Visual Studio'nın vcpkg örneğinizi bulmasına yardımcı olur. Bunu eklemek PATH , vcpkg komutlarını doğrudan kabuktan çalıştırabilmenizi sağlar.

  3. Bir bildirim dosyası oluşturun ve bağımlılıkları ekleyin.

    Bir vcpkg bildirim dosyası (vcpkg.json) oluşturmak için aşağıdaki komutu çalıştırın:

    vcpkg new --application
    

    komutu projenin vcpkg new dizinine bir vcpkg.json dosya ve bir vcpkg-configuration.json dosya ekler.

    fmt Paketi bağımlılık olarak ekleyin:

    vcpkg add port fmt
    

    Artık şu vcpkg.json içeriği içermelidir:

    {
        "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.

    Oluşturulan vcpkg-configuration.json dosya, projenin bağımlılıklarına en düşük sürüm kısıtlamaları getiren bir temel sunar. Bu dosyayı değiştirmek bu öğreticinin kapsamının dışındadır. Bu öğreticide geçerli olmasa da, farklı geliştirme ortamlarında sürüm tutarlılığı sağlamak için dosyayı kaynak denetimi altında tutmak vcpkg-configuration.json iyi bir uygulamadır.

3 - Proje dosyalarını ayarlama

  1. helloworld.cpp dosyasını değiştirin.

    öğesinin içeriğini helloworld.cpp aşağıdaki kodla değiştirin:

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

    Bu kaynak dosya kitaplığın <fmt/core.h> parçası fmt olan üst bilgiyi içerir. İşlev, main() konsola "Merhaba Dünya!" iletisinin çıkışını almak için çağırırfmt::print().

  2. CMakePresets.json Dosyayı yapılandırın.

    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.

    Aşağıdaki içerikle eşleşecek şekilde değiştirin CMakePresets.json :

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

    Aşağıdaki içerikle oluşturun 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.

  3. CMakeLists.txt dosyasını düzenleyin.

    CMakeLists.txt dosyasının içeriğini aşağıdaki kodla değiştirin:

    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 derleme başarısız olur.
    • 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.

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

  1. Projeyi derleyin.

    Visual Studio'da projeyi oluşturmak için basın Ctrl+Shift+B .

  2. Uygulamayı çalıştırın.

    Son olarak yürütülebilir dosyayı çalıştırın:

    Yürütülebilir dosyayı çalıştırma

    Yürütülebilir dosyayı çalıştırmak için Visual Studio kullanıcı arabiriminin ekran görüntüsü.

    Çıktıyı görmeniz gerekir:

    Program çıktısı

    Program çıkışlarının ekran görüntüsü - "Merhaba Dünya!"

Sonraki adımlar

hakkında vcpkg.jsondaha fazla bilgi edinmek için başvuru belgelerimize bakın: