Öğ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
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.
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
Visual Studio projesini oluşturma
- "CMake Project" şablonunu kullanarak Visual Studio'da yeni proje 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ırmak ve "oluştur" düğmesine tıklamak için Visual Studio kullanıcı arabiriminin ekran görüntüsü.
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 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"
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.
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%
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 eklemekPATH
, vcpkg komutlarını doğrudan kabuktan çalıştırabilmenizi sağlar.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 birvcpkg.json
dosya ve birvcpkg-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 tutmakvcpkg-configuration.json
iyi bir uygulamadır.
3 - Proje dosyalarını ayarlama
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()
.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 ayarlayanCMAKE_TOOLCHAIN_FILE
"vcpkg" adlı tek bir ön ayar içerir. Dosya,CMakeUserPresets.json
ortam değişkeniniVCPKG_ROOT
yerel vcpkg yüklemenizin bulunduğu mutlak yola işaret eder. Sürüm denetim sistemlerinin denetlenmemesiCMakeUserPresets.json
önerilir.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ığı ararfmt
. anahtarREQUIRED
sözcüğü, paket bulunamazsa bir hata oluşturulmasını sağlar.add_executable(HelloWorld helloworld.cpp)
: Kaynak dosyasındanhelloworld.cpp
oluşturulan "HelloWorld" adlı yürütülebilir bir hedef ekler.target_link_libraries(HelloWorld PRIVATE fmt::fmt)
: Yürütülebilir dosyanınHelloWorld
kitaplığa karşıfmt
bağlanması gerektiğini belirtir.PRIVATE
anahtar sözcüğü, yalnızca derlemeHelloWorld
için gerekli olduğunu ve diğer bağımlı projelere yayılmaması gerektiğini belirtirfmt
.
4 - Projeyi derleme ve çalıştırma
Projeyi derleyin.
Visual Studio'da projeyi oluşturmak için basın
Ctrl+Shift+B
.Uygulamayı çalıştırın.
Son olarak yürütülebilir dosyayı çalıştırın:
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 çıkışlarının ekran görüntüsü - "Merhaba Dünya!"
Sonraki adımlar
hakkında vcpkg.json
daha fazla bilgi edinmek için başvuru belgelerimize bakın: