Konak bağımlılıkları

Kod oluşturmak veya özel derleme sistemi uygulamak için diğer bağlantı noktaları tarafından derleme zamanında kullanılan araçlar vcpkg içinde paketlenebilir.

Tüketen

Bir bağlantı noktasını araç olarak kullanırken, bağımlılığın "host" alanını true olarak ayarlamanız gerekir. Örneğin:

{
    "name": "contoso-http-library",
    "version-string": "1.0.0",
    "description": "Contoso's http runtime library",
    "dependencies": [
        "contoso-core-library",
        {
            "name": "contoso-code-generator",
            "host": true
        },
        {
            "name": "contoso-build-system",
            "host": true
        }
    ]
}

Bu durumda, contoso-code-generator ve contoso-build-system (geçişli bağımlılıklar dahil) oluşturulmadan önce contoso-http-library konak üçlüs için derlenir ve yüklenir.

Not

Tüketicilerin meta veri biçimi yerine CONTROL kullanması vcpkg.json gerekir. kullanarak vcpkg format-manifest /path/to/CONTROLvar olan CONTROL bir dosyayı kolayca dönüştürebilirsiniz.

Ardından, tüketicinin portfile dosyasında (contoso-http-library örnekte), CMake değişkeni CURRENT_HOST_INSTALLED_DIR olarak installed/<host-triplet> tanımlanır ve gerekli varlıkları bulmak için kullanılmalıdır. Örnekte, contoso-code-generator tüketicinin yerel yoluna şu yollarla ekleyebileceği bir yükleme tools/contoso-code-generator/ccg.exe yapmış olabilir:

# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)

Konak Üçlüsunun Belirtilmesi

Varsayılan konak üçlüleri, konak mimarisine ve işletim sistemine (örneğin x64-windows, , x64-linuxveya x64-osx) göre seçilir. Bunlar şu şekilde geçersiz kılınabilir:

  1. CMake tabanlı bildirim modunda, ilk project() yönergeden önce çağrılır set(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")
  2. MSBuild tabanlı bildirim modunda özelliğini ayarlama VcpkgHostTriplet
  3. Komut satırında, bayrağı aracılığıyla --host-triplet=...
  4. VCPKG_DEFAULT_HOST_TRIPLET ortam değişkeni

Üretim

Bir araç üretmenin özel gereksinimleri yoktur; araçlar, tüm normal ilkeler ve uygulamalar izlenerek standart bir bağlantı noktası olarak yazılmalıdır. Özellikle, bağlantı noktası dosyası bağlamında değilHOST_TRIPLET, üzerinde derleme TARGET_TRIPLETyapmalıdır.

Geçerli bağlam çapraz derleniyorsa (TARGET_TRIPLET değil HOST_TRIPLET), VCPKG_CROSSCOMPILING doğru bir değere ayarlanır.

if(VCPKG_CROSSCOMPILING)
    # This is a native build
else()
    # This is a cross build
endif()

Yalnızca konak bağlantı noktaları

Bazı bağlantı noktaları yalnızca bir konak bağımlılığı aracılığıyla bağımlı olmalıdır; betik bağlantı noktaları ve araç bağlantı noktaları yaygın örneklerdir. Bu durumda, bunu açıklamak için supports ifadesini kullanabilirsiniz "native" . Bu, false olduğunda VCPKG_CROSSCOMPILING ifadenin doğru olduğunu destekler (bunu TARGET_TRIPLET == HOST_TRIPLETifade ediyor).

VCPKG_USE_HOST_TOOLS

vcpkg CMAKE_PROGRAM_PATHtarafından oluşturulan yürütülebilir dosyaları öğesine eklemek için bu CMake seçeneğini ayarlayın. ve derleme işleminiz sırasında kullanılabilir hale getirin.

Bu seçeneğin etkili olması için, dosyanızdaki CMakeLists.txt herhangi bir çağrıdan project() önce ayarlanması gerekir. Değişkenin VCPKG_HOST_TRIPLET de ayarlanması gerekir.

yalnızca konak üçlüsunun tools klasöründe yüklü olan araçlar öğesine CMAKE_PROGRAM_PATHeklenir. Etkili bir şekilde, aşağıdaki konumlar eklenir:

  • ${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools
  • ${VCPKG_INSTALLED/DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin