Aracılığıyla paylaş


Yer Paylaşımlı ÜçlüLeri Kullanma

Linux'ta dinamik kitaplıklar oluşturma

vcpkg kullanarak birçok yapılandırma için kitaplıklar oluşturabilirsiniz. Ancak bu, şu anda Linux ve Mac OS'da paylaşılan kitaplıkları içermez.

Bu, bu platformlarda dinamik kitaplıklarınızı oluşturmak için vcpkg kullanamayacağınız anlamına gelmez! Bu belge, Linux üzerinde kolayca dinamik kitaplıklar oluşturmak için kendi --overlay-triplets özel üçlülerinizi oluşturma konusunda size yol gösterir.

1. Adım: Özel üçlü dosyaları oluşturma

Zaman kazanmak için var olan x64-linux.cmake üçlü dosyayı kopyalayın.

~/git$ mkdir custom-triplets
~/git$ cp vcpkg/triplets/x64-linux.cmake custom-triplets/x64-linux-dynamic.cmake

Ve aşağıdaki içerikle eşleşecek şekilde değiştirin custom-triplets/x64-linux-dynamic.cmake :

# ~/git/custom-triplets/x64-linux-dynamic.cmake
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic) # This changed from static to dynamic

set(VCPKG_CMAKE_SYSTEM_NAME Linux)

2. Adım: Dinamik kitaplıklar oluşturmak için kullanın --overlay-triplets

Dizine --overlay-triplets üçlüleri custom-triplets eklemek için seçeneğini kullanın.

~/git$ vcpkg/vcpkg install sqlite3:x64-linux-dynamic --overlay-triplets=custom-triplets
The following packages will be built and installed:
    sqlite3[core]:x64-linux-dynamic
Starting package 1/1: sqlite3:x64-linux-dynamic
Building package sqlite3[core]:x64-linux-dynamic...
-- Loading triplet configuration from: /home/victor/git/custom-triplets/x64-linux-dynamic.cmake
-- Downloading https://sqlite.org/2019/sqlite-amalgamation-3280000.zip...
-- Extracting source /home/victor/git/vcpkg/downloads/sqlite-amalgamation-3280000.zip
-- Applying patch fix-arm-uwp.patch
-- Using source at /home/victor/git/vcpkg/buildtrees/sqlite3/src/3280000-6a3ff7ce92
-- Configuring x64-linux-dynamic-dbg
-- Configuring x64-linux-dynamic-rel
-- Building x64-linux-dynamic-dbg
-- Building x64-linux-dynamic-rel
-- Performing post-build validation
-- Performing post-build validation done
Building package sqlite3[core]:x64-linux-dynamic... done
Installing package sqlite3[core]:x64-linux-dynamic...
Installing package sqlite3[core]:x64-linux-dynamic... done
Elapsed time for package sqlite3:x64-linux-dynamic: 44.82 s

Total elapsed time: 44.82 s

The package sqlite3:x64-linux-dynamic provides CMake targets:

    find_package(unofficial-sqlite3 CONFIG REQUIRED)
    target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)

Katman üçlüleri , , vcpkg updatevcpkg upgradeve vcpkg removekullanırken vcpkg installözel üçlü dosyalarınızı etkinleştirir.

seçeneği kullanılırken --overlay-triplets , aşağıdakine benzer bir ileti özel üçlü kullanıldığını size bildirir:

-- Loading triplet configuration from: /home/custom-triplets/x64-linux-dynamic.cmake

Varsayılan üçlüleri geçersiz kılma

Fark etmiş olabileceğiniz gibi, Windows (x86-windows ve x64-windows) için varsayılan üçlüler dinamik kitaplıkları yüklerken statik kitaplıklar için bir sonek (-static) gerekir. Bu, statik kitaplıkların ve x64-osxtarafından x64-linux oluşturulduğu Linux ve Mac OS ile farklıdır.

Linux'ta --overlay-triplets aynı davranışı gerçekleştirmek için varsayılan üçlüleri geçersiz kılmak mümkündür:

  • x64-linux: Dinamik kitaplıklar oluşturur,
  • x64-linux-static: Statik kitaplıklar oluşturur.

1. Adım: Katman üçlülerini oluşturma

Önceki örnekte oluşturulan özel üçlü kullanarak olarak yeniden adlandırın custom-triplets/x64-linux-dynamic.cmakecustom-triplets/x64-linux.cmake. Ardından, klasörünüzde custom-triplets varsayılan x64-linux üçlü (statik kitaplıklar oluşturan) öğesini kopyalayın ve olarak yeniden adlandırınx64-linux-static.cmake.

~/git$ mv custom-triplets/x64-linux-dynamic.cmake custom-triplets/x64-linux.cmake
~/git$ cp vcpkg/triplets/x64-linux.cmake custom-triplets/x64-linux-static.cmake

2. Adım: Varsayılan üçlüleri geçersiz kılmak için kullanın --overlay-triplets

Dizine --overlay-triplets üçlüleri custom-triplets eklemek için seçeneğini kullanın.

~/git$ vcpkg/vcpkg install sqlite3:x64-linux --overlay-triplets=custom-triplets
The following packages will be built and installed:
    sqlite3[core]:x64-linux
Starting package 1/1: sqlite3:x64-linux
Building package sqlite3[core]:x64-linux...
-- Loading triplet configuration from: /home/victor/git/custom-triplets/x64-linux.cmake
-- Downloading https://sqlite.org/2019/sqlite-amalgamation-3280000.zip...
-- Extracting source /home/victor/git/vcpkg/downloads/sqlite-amalgamation-3280000.zip
-- Applying patch fix-arm-uwp.patch
-- Using source at /home/victor/git/vcpkg/buildtrees/sqlite3/src/3280000-6a3ff7ce92
-- Configuring x64-linux-dbg
-- Configuring x64-linux-rel
-- Building x64-linux-dbg
-- Building x64-linux-rel
-- Performing post-build validation
-- Performing post-build validation done
Building package sqlite3[core]:x64-linux... done
Installing package sqlite3[core]:x64-linux...
Installing package sqlite3[core]:x64-linux... done
Elapsed time for package sqlite3:x64-linux: 44.82 s

Total elapsed time: 44.82 s

The package sqlite3:x64-linux provides CMake targets:

    find_package(unofficial-sqlite3 CONFIG REQUIRED)
    target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)

Varsayılan üçlü özel üçlünüz tarafından maskelenmiştir:

-- Loading triplet configuration from: /home/victor/git/custom-triplets/x64-linux.cmake