[vcpkg-docs] Initial commit of triplets documentation

This commit is contained in:
Robert Schumacher 2017-06-06 11:40:47 -07:00
parent 4c33195759
commit 76b754e52d
4 changed files with 66 additions and 9 deletions

View File

@ -31,6 +31,8 @@ For CMake projects, simply include our toolchain file. See our [using a package]
## Examples
See the [documentation](docs/index.md) for specific walkthroughs, including [using a package](docs/examples/using-sqlite.md) and [adding a new package](docs/examples/packaging-zlib.md).
Our docs are now also available online at ReadTheDocs: [https://vcpkg.readthedocs.io/]()!
See a 4 minute [video demo](https://www.youtube.com/watch?v=y41WFKbQFTw).
## Contributing

View File

@ -13,6 +13,7 @@ Vcpkg helps you get C and C++ libraries on Windows. This tool and ecosystem are
### User Help
- [Integration with build systems](users/integration.md)
- [Triplet files](users/triplets.md)
### Maintainer help

View File

@ -1,16 +1,16 @@
## `CONTROL` files
Each port has some static metadata in the form of a `CONTROL` file. This file uses the same rough syntax as and a subset of the fields from [the Debian `control` format][debian].
# CONTROL files
Each port has some static metadata in the form of a `CONTROL` file. This file uses the same syntax and a subset of the fields from [the Debian `control` format][debian].
Fields are case-sensitive.
Field names are case-sensitive.
[debian]: https://www.debian.org/doc/debian-policy/ch-controlfields.html
### Recognized fields
## Recognized fields
#### Source
### Source
The name of the port.
#### Version
### Version
The port version.
This field should be an alphanumeric string which may also contain `.`, `_`, or `-`. No attempt at ordering versions is made; all versions are treated as bitstrings and are only evaluated for equality.
@ -22,15 +22,15 @@ Example:
Version: 1.0.5-2
```
#### Description
### Description
A description of the library
The first sentence of the description should concisely describe the purpose and contents of the library. Then, a larger description including the library's "proper name" should follow.
#### Maintainer
### Maintainer
Reserved for future use.
#### Build-Depends
### Build-Depends
The list of dependencies required to build and use this library.
Example:

54
docs/users/triplets.md Normal file
View File

@ -0,0 +1,54 @@
# Triplet files
Triplet is a standard term used in cross compiling as a way to completely capture the target environment (cpu, os, compiler, runtime, etc) in a single convenient name.
In Vcpkg, we use triplets to describe self-consistent builds of library sets. This means every library will be built using the same target cpu, OS, and compiler toolchain, but also CRT linkage and preferred library type.
We currently provide many triplets by default (run `vcpkg help triplet`). However, you can easily add your own by creating a new file in the `triplets\` directory. The new triplet will immediately be available for use in commands, such as `vcpkg install boost:x86-windows-custom`.
## Variables
### VCPKG_TARGET_ARCHITECTURE
Specifies the target machine architecture.
Valid options are `x86`, `x64`, and `arm`.
### VCPKG_CRT_LINKAGE
Specifies the desired MSVCRT linkage.
Valid options are `dynamic` and `static`.
### VCPKG_LIBRARY_LINKAGE
Specifies the preferred library linkage.
Valid options are `dynamic` and `static`. Note that libraries can ignore this setting if they do not support the preferred linkage type.
### VCPKG_CMAKE_SYSTEM_NAME
Specifies the target platform.
Valid options are `WindowsStore` or empty. Empty corresponds to Windows Desktop and `WindowsStore` corresponds to UWP.
When setting this variable to `WindowsStore`, you must also set `VCPKG_CMAKE_SYSTEM_VERSION` to `10.0`.
### VCPKG_PLATFORM_TOOLSET
Specifies the C/C++ compiler toolchain to use.
This can be set to `v141`, `v140`, or left blank. If left blank, we select the latest compiler toolset available on your machine.
## Per-port customization
The CMake Macro `PORT` will be set when interpreting the triplet file and can be used to change settings (such as `VCPKG_LIBRARY_LINKAGE`) on a per-port basis.
Example:
```cmake
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CRT_LINKAGE dynamic)
if(PORT STREQUAL "qt5")
set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()
```
This will build `qt5` as DLLs against the dynamic CRT, but every other library as a static library (still against the dynamic CRT).
For an example in a real project, see https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.
## Additional Remarks
The default triplet when running any vcpkg command is `%VCPKG_DEFAULT_TRIPLET%` or `x86-windows` if that environment variable is undefined.
We recommend using a systematic naming scheme when creating new triplets. The Android toolchain naming scheme is a good source of inspiration: https://developer.android.com/ndk/guides/standalone_toolchain.html.