vcpkg, yüklü paketleri projelerinizde otomatik olarak kullanılabilir hale getirmek için CMake ile sorunsuz tümleştirme sunar. vcpkg'nin tümleştirildiği mekanizma, bir CMake araç zinciri dosyası sağlamaktır.
CMake bir projeyi ilk kez yapılandırdığında, uygun bir araç zinciri (derleyici, bağlayıcı vb.) bulmak için iç arama yordamları çalıştırır. Bu arama, işlevinizin CMakeLists.txtiçinde project() gerçekleşir.
CMake, araç zinciri seçim işlemini özelleştirmek için araç zinciri dosyaları olarak bilinen özel CMake dili betikleri kullanmayı destekler. Değişken ayarlanarak CMAKE_TOOLCHAIN_FILE bir araç zinciri dosyası belirtilir. CMake, sağlanan araç zinciri betiğinin içeriğini değerlendirir ve değişken tanımlarını, gerekli derleme araçlarının yollarını ve çapraz derleme bayrakları gibi diğer derleme parametrelerini buna göre ayarlar.
vcpkg araç zincirini ()<vcpkg-root>/scripts/buildsystems/vcpkg.cmake kullanacak şekilde ayarladığınızdaCMAKE_TOOLCHAIN_FILE, vcpkg yerleşik CMake işlevleriyle saydam bir şekilde tümleştirmek üzere kod eklemek için araç zinciri dosya mekanizmasından yararlanır.
Üçlü değişkenini kullanarak VCPKG_CHAINLOAD_TOOLCHAIN_FILE kendi araç kümelerinizi yapılandırmak için yine de bir araç zinciri dosyası kullanabilirsiniz.
vcpkg tümleştirmesi, kullandığınız işlem moduna bağlı olarak farklı çalışır:
Klasik modda vcpkg, yüklü paketlerin , find_library()ve find_path() işlevleri aracılığıyla find_package()kullanılabilir olmasını sağlamak için CMake arama yollarını uygun şekilde ayarlar.
Bildirim modunda, yukarıdakilere ek olarak, araç zinciri bildirim dosyalarını (vcpkg.jsondosyaları) algılar ve projenin bağımlılıklarını otomatik olarak almak için çalışırvcpkg install.
Araç zinciri dosyası çağrı sırasında project() değerlendirildiğinden, vcpkg ayarını değiştiren tüm CMake düzeyindeki değişkenlerin ilk çağrısından project()önce ayarlanması gerekir. ABI karma değişikliklerine neden olan herhangi bir vcpkg ayarını değiştirirseniz CMake projenizi yeniden yapılandırmanız da gerekebilir.
Geçerli makinenize özgü vcpkg için mutlak bir yol kullanmanız gerekiyorsa, bunu kullanabilir CMakeUserPresets.json ve dosyanıza .gitignore ekleyebilirsiniz.
vcpkg, CMake'nin kitaplıkları bulmak için yerel mekanizmalarını destekler: find_package(), find_library()ve find_path(). Belirli CMake desteğine sahip kitaplıkları yüklerken, vcpkg kitaplığın nasıl kullanılacağına ilişkin kullanım bilgilerini görüntüler:
The package zlib is compatible with built-in CMake targets:
find_package(ZLIB REQUIRED)
target_link_libraries(main PRIVATE ZLIB::ZLIB)
vcpkg projenize otomatik olarak herhangi bir ekleme veya bağlantı yolu eklemez. Yalnızca üst bilgi kitaplığı kullanmak için, tüm platformlarda doğru şekilde çalışacak bir kitaplık kullanabilirsiniz find_path() :
cmake
# To find and use catch2find_path(CATCH_INCLUDE_DIR NAMES catch.hpp PATH_SUFFIXES catch2)
target_include_directories(main PRIVATE ${CATCH_INCLUDE_DIR})
IDE Tümleştirme
Visual Studio / Visual Studio Code
Hem Visual Studio'da hem de Visual Studio Code'da CMake Önayarları kullanmanızı öneririz.
Bu satırı her profile ayrı ayrı eklemeniz gerekir.
Birden Çok Araç Zinciri Dosyası Kullanma
vcpkg'nin araç zinciri dosyasını başka bir araç zinciri dosyasıyla birleştirmek için CMake önbellek değişkenini VCPKG_CHAINLOAD_TOOLCHAIN_FILEayarlayabilirsiniz:
vcpkg, kitaplık oluştururken derleyiciniz veya derleme bayraklarınız gibi araç zincirinizin ayarlarını otomatik olarak uygulamaz. vcpkg'nin kitaplık ayarlarını değiştirmek için özel bir üçlü dosya oluşturmanız gerekir ( araç zincirinizi paylaşabilir)**
Ayarlar Başvurusu
Vcpkg'yi etkileyen tüm değişkenler, komut satırı veya set() deyimler aracılığıyla bir CMakePresets.json's "cacheVariables" eşlemesi gibi ilk project() yönergeden önce tanımlanmalıdır.
VCPKG_TARGET_TRIPLET
Bu ayar, üçlü vcpkg'nin kitaplıkları yükleyip tüketeceğini denetler.
Ayar kaldırılırsa, vcpkg geçerli derleyici ayarlarına göre uygun varsayılan üçlüleri otomatik olarak algılar. Bu CMake değişkenini değiştirirseniz önbelleğinizi silip yeniden yapılandırmanız gerekir.
VCPKG_HOST_TRIPLET
Bu değişken, hangi üçlü konak bağımlılıklarının yükleneceğini denetler.
Ayar kaldırıldığında, vcpkg otomatik olarak uygun bir yerel üçlü (x64-windows, x64-osx, x64-linux) algılar.
Bu değişken, içinde VCPKG_MANIFEST_FEATURESlistelenenlere ek olarak varsayılan özelliklerin etkinleştirilmesini denetler. olarak ayarlanırsa ON, varsayılan özellikler otomatik olarak etkinleştirilmez.
varsayılan değeridir OFF.
VCPKG_INSTALL_OPTIONS
Bu değişken, otomatik yükleme sırasında vcpkg aracına geçirilecek ek komut satırı parametreleri listesine ayarlanabilir.
VCPKG_PREFER_SYSTEM_LIBS
Uyarı
Bu özellik kullanım dışı bırakıldı. Bunun yerine boş katman bağlantı noktalarını kullanın.
Bu değişken, vcpkg'nin yoluna CMAKE_PREFIX_PATHCMAKE_LIBRARY_PATH önceden eklemek yerine eklenip eklenmeyeceğini denetler ve CMAKE_FIND_ROOT_PATH böylece vcpkg kitaplıkları/paketleri araç zinciri/sistem kitaplıkları/paketlerinden sonra bulunur.
varsayılan değeridir OFF.
VCPKG_FEATURE_FLAGS
Bu değişken, deneysel davranışı kabul etmek için otomatik yükleme sırasında vcpkg aracına geçirilecek özellik bayrakları listesine ayarlanabilir.
--feature-flags= Daha fazla bilgi için komut satırı seçeneğine bakın.
VCPKG_TRACE_FIND_PACKAGE
olarak ayarlandığında ON, her çağrıyı olarak find_packageyazdırın. İç içe çağrılar (örneğin aracılığıyla find_dependency) iç içe yerleştirme derinliğine göre girintilenir.
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.
vcpkg geri bildirimi
vcpkg, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin:
Azure HPC es una capacidad en la nube creada a propósito para la carga de trabajo de IA y de HPC, mediante procesadores de vanguardia e interconexión InfiniBand de clase HPC, con el fin de ofrecer el mejor rendimiento, escalabilidad y valor de la aplicación. Azure HPC permite a los usuarios desbloquear la innovación, la productividad y la agilidad empresarial, mediante una gama de tecnologías de inteligencia artificial y de HPC de alta disponibilidad que se pueden asignar dinámicamente a medida que cambian