다음을 통해 공유


보관 파일 패키징 예제: zlib

부트스트랩 create

먼저 라이브러리 원본의 전역적으로 액세스할 수 있는 보관 파일을 찾습니다. Zip, gzip 및 bzip이 모두 지원됩니다. 비공식 미러 비해 공식 출처 또는 미러 것을 강력히 선호합니다.

zlib의 웹 사이트를 보면 URL http://zlib.net/zlib-1.2.13.tar.gz 이 적절해 보입니다.

둘째, 적절한 패키지 이름을 결정합니다. 이는 ASCII, 소문자 및 라이브러리의 "사람 이름"을 아는 사람이 인식할 수 있어야 합니다. 라이브러리가 이미 다른 패키지 관리자에 패키지된 경우 해당 이름을 사용하는 것이 좋습니다.

zlib는 이미 zlib로 패키지되었으므로 이 예제에서는 zlib2라는 이름을 사용합니다.

마지막으로, 보관에 대한 서버 이름이 매우 설명적이지 않은 경우(예: GitHub에서 압축된 커밋 또는 분기 다운로드) 양식 <packagename>-<version>.zip의 멋진 보관 이름을 선택합니다.

zlib-1.2.13.zip 은(는) 좋은 이름이므로 변경할 필요가 없습니다.

그런 다음 이 모든 정보를 명령으로 create 전달하여 원본을 다운로드하고 내부 ports/<packagename>패키징 프로세스를 부트스트랩합니다.

PS D:\src\vcpkg> .\vcpkg create zlib2 http://zlib.net/zlib-1.2.13.tar.gz zlib-1.2.13.tar.gz
-- Downloading http://zlib.net/zlib-1.2.13.tar.gz -> zlib-1.2.13.tar.gz...
-- Generated portfile: D:\src\vcpkg\ports\zlib2\portfile.cmake
-- Generated manifest: D:\src\vcpkg\ports\zlib2\vcpkg.json
-- To launch an editor for these new files, run
--     .\vcpkg edit zlib2

매니페스트 파일 만들기

생성된 ports/<package>/portfile.cmake파일 외에도 파일이 필요합니다 ports/<package>/vcpkg.json . 이 파일은 패키지의 메타데이터를 설명하는 간단한 필드 집합입니다.

zlib2의 경우 다음 내용이 포함된 파일을 ports/zlib2/vcpkg.json 만듭니다.

{
  "name": "zlib2",
  "version": "1.2.13",
  "description": "A Massively Spiffy Yet Delicately Unobtrusive Compression Library"
}

생성된 포트파일 조정

생성된 portfile.cmake 라이브러리는 대부분의 라이브러리를 제대로 패키지하기 위해 일부 편집이 필요하기는 하지만 빌드를 사용해 보면 시작할 수 있습니다.

PS D:\src\vcpkg> .\vcpkg install zlib2
Computing installation plan...
The following packages will be built and installed:
    zlib2[core]:x64-uwp
Starting package 1/1: zlib2:x64-uwp
Building package zlib2[core]:x64-uwp...
-- Using cached C:/src/vcpkg/downloads/zlib-1.2.13.tar.gz
-- Cleaning sources at C:/src/vcpkg/buildtrees/zlib2/src/1.2.13-deec42f53b.clean. Pass --editable to vcpkg to reuse sources.
-- Extracting source C:/src/vcpkg/downloads/zlib-1.2.13.tar.gz
-- Applying patch cmake_dont_build_more_than_needed.patch
-- Using source at C:/src/vcpkg/buildtrees/zlib2/src/1.2.13-deec42f53b.clean
-- Configuring x64-uwp
-- Building x64-uwp-dbg
-- Building x64-uwp-rel
-- Installing: C:/src/vcpkg/packages/zlib2_x64-uwp/share/zlib2/copyright
-- Performing post-build validation
Include files should not be duplicated into the /debug/include directory. If this cannot be disabled in the project cmake, use
    file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
/debug/share should not exist. Please reorganize any important files, then use
    file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
The software license must be available at ${CURRENT_PACKAGES_DIR}/share/zlib2/copyright
Found 3 error(s). Please correct the portfile:
    D:\src\vcpkg\ports\zlib2\portfile.cmake

이 시점에서는 포트파일의 품질을 꾸준히 향상하면서 오류 메시지 및 로그 파일을 읽는 것이 중요합니다. Zlib는 패키지에 복사할 라이선스의 개별 복사본을 제공하고, 실행 파일 및 헤더의 빌드 및 설치를 표시하지 않고, 정적 라이브러리를 설치한 후 제거해야 했습니다.

제안된 예제 포트파일

ports/ 디렉터리에는 CMake를 기반으로 하지 않는 라이브러리를 포함하여 예제로 사용할 수 있는 많은 라이브러리가 있습니다.

  • 헤더 전용 라이브러리
    • rapidjson
    • range-v3
  • MSBuild 기반
    • chakracore
  • 비 CMake, 사용자 지정 빌드 시스템
    • openssl
    • ffmpeg