aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-06-06 11:40:47 -0700
committerRobert Schumacher <roschuma@microsoft.com>2017-06-07 14:32:54 -0700
commit76b754e52ddcb2d2a6958e4a913d0371c00279d8 (patch)
tree29042e70dea2fd42fa3e41e378567f8321e11ab1 /docs
parent4c33195759bfc2b3bde8628a6617f46040721330 (diff)
downloadvcpkg-76b754e52ddcb2d2a6958e4a913d0371c00279d8.tar.gz
vcpkg-76b754e52ddcb2d2a6958e4a913d0371c00279d8.zip
[vcpkg-docs] Initial commit of triplets documentation
Diffstat (limited to 'docs')
-rw-r--r--docs/index.md1
-rw-r--r--docs/maintainers/control-files.md18
-rw-r--r--docs/users/triplets.md54
3 files changed, 64 insertions, 9 deletions
diff --git a/docs/index.md b/docs/index.md
index 9b279baf0..3fa5784e9 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -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
diff --git a/docs/maintainers/control-files.md b/docs/maintainers/control-files.md
index 1cb444df3..e446fe6fa 100644
--- a/docs/maintainers/control-files.md
+++ b/docs/maintainers/control-files.md
@@ -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:
diff --git a/docs/users/triplets.md b/docs/users/triplets.md
new file mode 100644
index 000000000..2b0971da3
--- /dev/null
+++ b/docs/users/triplets.md
@@ -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.