오버레이 삼중자 사용
Linux에서 동적 라이브러리 빌드
vcpkg를 사용하면 대부분의 구성에 대한 라이브러리를 기본으로 빌드할 수 있습니다. 그러나 현재 Linux 및 Mac OS의 공유 라이브러리는 포함되지 않습니다.
그렇다고 해서 vcpkg를 사용하여 이러한 플랫폼에서 동적 라이브러리를 빌드할 수 없다는 의미는 아닙니다. 이 문서에서는 Linux에서 동적 라이브러리를 --overlay-triplets
쉽게 빌드할 수 있도록 사용자 지정 삼중자를 만드는 방법을 안내합니다.
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 update
vcpkg upgrade
및 vcpkg remove
.
이 --overlay-triplets
옵션을 사용하는 경우 다음과 같은 메시지를 통해 사용자 지정 삼중자가 사용되고 있음을 알 수 있습니다.
-- Loading triplet configuration from: /home/custom-triplets/x64-linux-dynamic.cmake
기본 삼중값 재정의
눈치채셨듯이 Windows용 기본 삼중자(x86-windows
및 x64-windows
)는 동적 라이브러리를 설치하지만 정적 라이브러리에는 접미사(-static
)가 필요합니다. 이는 정적 라이브러리가 빌드 x64-linux
되는 Linux 및 Mac OS와 x64-osx
다릅니다.
--overlay-triplets
Linux에서 동일한 동작을 수행하려면 기본 삼중자를 재정의할 수 있습니다.
x64-linux
: 동적 라이브러리를 빌드합니다.x64-linux-static
: 정적 라이브러리를 빌드합니다.
1단계: 오버레이 트리플렛 만들기
이전 예제에서 만든 사용자 지정 삼중자를 사용하여 이름을 .로 custom-triplets/x64-linux.cmake
바꿉니다custom-triplets/x64-linux-dynamic.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
vcpkg