mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-24 01:48:59 +08:00
[vcpkg-docs] Initial commit of triplets documentation
This commit is contained in:
parent
4c33195759
commit
76b754e52d
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
54
docs/users/triplets.md
Normal 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.
|
Loading…
Reference in New Issue
Block a user