封裝封存盤案範例: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
產生的 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
此時,讀取錯誤訊息和記錄檔很重要,同時穩步改善 portfile 的品質。 Zlib 需要提供授權的離散複本以複製到套件、隱藏可執行檔和標頭的建置和安裝,並在安裝後移除靜態庫。
建議的範例 portfiles
目錄中 ports/
有許多連結庫可用來作為範例,包括許多不是以 CMake 為基礎的連結庫。
- 僅限標頭連結庫
- rapidjson
- range-v3
- MSBuild 型
- chakracore
- 非 CMake、自定義建置系統
- openssl
- ffmpeg
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應