* [vcpkg docs] add docs for manifest files These are just for the maintainer docs, not user docs. * [vcpkg] EBNF-ify platform expression parsing this modifies nothing about what strings are accepted or rejected, it just moves stuff around. also adds tests. * [vcpkg docs] add manifest mode example * [wip] docs for augustin also fix tabs * [vcpkg manifest] switch to using maps for features * Apply suggestions from code review * un-experimentize format-manifest * flesh out the user manifest mode docs * CRs * billy CRs * final personal pass-thru
2.2 KiB
Packaging Github Repos Example: libogg
Create the manifest file
The manifest file (called vcpkg.json
) is a json file describing the package's metadata.
For libogg, we'll create the file ports/libogg/vcpkg.json
with the following content:
{
"name": "libogg",
"version-string": "1.3.3",
"description": "Ogg is a multimedia container format, and the native file and stream format for the Xiph.org multimedia codecs."
}
You can format the manifest file to our specifications with vcpkg format-manifest ports/libogg/vcpkg.json
.
Create the portfile
portfile.cmake
describes how to build and install the package. First we download the project from Github with vcpkg_from_github
:
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO xiph/ogg
REF v1.3.3
SHA512 0bd6095d647530d4cb1f509eb5e99965a25cc3dd9b8125b93abd6b248255c890cf20710154bdec40568478eb5c4cde724abfb2eff1f3a04e63acef0fbbc9799b
HEAD_REF master
)
The important parts to update are REPO
for the GitHub repository path, REF
for a stable tag/commit to use, and SHA512
with the checksum of the downloaded zipfile (you can get this easily by setting it to 1
, trying to install the package, and copying the checksum).
Finally, we configure the project with CMake, install the package, and copy over the license file:
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
)
vcpkg_install_cmake()
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libogg RENAME copyright)
Check the documentation for vcpkg_configure_cmake
and vcpkg_install_cmake
if your package needs additional options.
Now you can run vcpkg install libogg
to build and install the package.
Suggested example portfiles
In the ports/
directory are many libraries that can be used as examples, including many that are not based on CMake.
- Header only libraries
- rapidjson
- range-v3
- MSBuild-based
- cppunit
- mpg123
- Non-CMake, custom buildsystem
- openssl
- ffmpeg