Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Создание динамических библиотек в Linux
С помощью vcpkg можно создавать библиотеки для многих конфигураций из поля. Однако в настоящее время это не включает общие библиотеки в Linux и Mac OS.
Это не означает, что вы не можете использовать vcpkg для создания динамических библиотек на этих платформах! В этом документе вы узнаете, как создать собственные настраиваемые триплеты, --overlay-triplets чтобы легко создавать динамические библиотеки в Linux.
Шаг 1. Создание пользовательских тройных файлов
Чтобы сэкономить время, скопируйте существующий x64-linux.cmake тройной файл.
~/git$ mkdir custom-triplets
~/git$ cp vcpkg/triplets/x64-linux.cmake custom-triplets/x64-linux-dynamic.cmake
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. Создание --overlay-triplets динамических библиотек
--overlay-triplets Используйте параметр для включения тройных в custom-triplets каталог.
~/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)
Триплеты наложения позволяют пользовательским тройным файлам при использовании vcpkg install, vcpkg updatevcpkg upgradeи vcpkg remove.
При использовании --overlay-triplets параметра сообщение, например следующее, позволяет узнать, что используется пользовательская тройная строка:
-- Loading triplet configuration from: /home/custom-triplets/x64-linux-dynamic.cmake
Переопределение тройных значений по умолчанию
Как вы могли заметить, по умолчанию триплеты для Windows (x86-windows и x64-windows) устанавливают динамические библиотеки, а суффикс (-static) необходим для статических библиотек. Это отличается от Linux и Mac OS, где статические библиотеки создаются x64-linux и x64-osx.
Использование --overlay-triplets можно переопределить триплеты по умолчанию для выполнения того же поведения в Linux:
x64-linux: создает динамические библиотеки,x64-linux-static: создает статические библиотеки.
Шаг 1. Создание тройных наложений
Используя настраиваемый триплет, созданный в предыдущем примере, переименуйте в custom-triplets/x64-linux-dynamic.cmake custom-triplets/x64-linux.cmake. Затем скопируйте триплет по умолчанию x64-linux (который создает статические библиотеки) в custom-triplets папке и переименуйте его x64-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. Использование --overlay-triplets для переопределения тройных значений по умолчанию
--overlay-triplets Используйте параметр для включения тройных в custom-triplets каталог.
~/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)
Триплет по умолчанию маскируется пользовательским триплетом:
-- Loading triplet configuration from: /home/victor/git/custom-triplets/x64-linux.cmake