diff --git a/en/docs/README.html b/en/docs/README.html index f335d57d9..4567ed789 100644 --- a/en/docs/README.html +++ b/en/docs/README.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/about/faq.html b/en/docs/about/faq.html index dd16ffd02..a44d8d937 100644 --- a/en/docs/about/faq.html +++ b/en/docs/about/faq.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/about/privacy.html b/en/docs/about/privacy.html index 27b9b791e..0512122a3 100644 --- a/en/docs/about/privacy.html +++ b/en/docs/about/privacy.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    -

    vcpkg telemetry and privacy

    +

    vcpkg Telemetry and Privacy

    vcpkg collects telemetry data to understand usage issues, such as failing packages, and to guide tool improvements. The collected data is anonymous. For more information about how Microsoft protects your privacy, see https://privacy.microsoft.com/en-US/privacystatement#mainenterprisedeveloperproductsmodule

    Scope

    @@ -231,7 +232,7 @@

    Disclosure

    Read more about vcpkg telemetry at docs/about/privacy.md

    Data Collected

    The telemetry feature doesn't collect personal data, such as usernames or email addresses. It doesn't scan your code and doesn't extract project-level data, such as name, repository, or author. The data is sent securely to Microsoft servers and held under restricted access.

    -

    Protecting your privacy is important to us. If you suspect the telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the Microsoft/vcpkg repository or send an email to vcpkg@microsoft.com for investigation.

    +

    Protecting your privacy is important to us. If you suspect the telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the Microsoft/vcpkg repository or send an email to vcpkg@microsoft.com for investigation.

    We collect various telemetry events such as the command line used, the time of invocation, and how long execution took. Some commands also add additional calculated information (such as the full set of libraries to install). We generate a completely random UUID on first use and attach it to each event.

    You can see the telemetry events any command by appending --printmetrics after the vcpkg command line.

    In the source code (included at https://github.com/microsoft/vcpkg-tool/ ), you can search for calls to the functions track_property(), track_feature(), track_metric(), and track_buildtime() diff --git a/en/docs/examples/installing-and-using-packages.html b/en/docs/examples/installing-and-using-packages.html index 89aad8411..24ceedccf 100644 --- a/en/docs/examples/installing-and-using-packages.html +++ b/en/docs/examples/installing-and-using-packages.html @@ -71,28 +71,28 @@

  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/examples/manifest-mode-cmake.html b/en/docs/examples/manifest-mode-cmake.html index a4b4a1178..feafde7c3 100644 --- a/en/docs/examples/manifest-mode-cmake.html +++ b/en/docs/examples/manifest-mode-cmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/examples/modify-baseline-to-pin-old-boost.html b/en/docs/examples/modify-baseline-to-pin-old-boost.html index e797c48d4..f26a6b210 100644 --- a/en/docs/examples/modify-baseline-to-pin-old-boost.html +++ b/en/docs/examples/modify-baseline-to-pin-old-boost.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/examples/overlay-triplets-linux-dynamic.html b/en/docs/examples/overlay-triplets-linux-dynamic.html index b6a824e6a..1c8934e4b 100644 --- a/en/docs/examples/overlay-triplets-linux-dynamic.html +++ b/en/docs/examples/overlay-triplets-linux-dynamic.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/examples/packaging-github-repos.html b/en/docs/examples/packaging-github-repos.html index e2a0ffb53..7756d7015 100644 --- a/en/docs/examples/packaging-github-repos.html +++ b/en/docs/examples/packaging-github-repos.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/examples/packaging-zipfiles.html b/en/docs/examples/packaging-zipfiles.html index 0f1a02342..afaa34ccd 100644 --- a/en/docs/examples/packaging-zipfiles.html +++ b/en/docs/examples/packaging-zipfiles.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    -

    Packaging Zipfiles Example: zlib

    +

    Packaging .zip Files Example: zlib

    Bootstrap with create

    First, locate a globally accessible archive of the library's sources. Zip, gzip, and bzip are all supported. Strongly prefer official sources or mirrors over unofficial mirrors.

    Looking at zlib's website, the URL http://zlib.net/zlib-1.2.11.tar.gz looks appropriate.

    diff --git a/en/docs/examples/patching.html b/en/docs/examples/patching.html index 80dfd653c..9e45af759 100644 --- a/en/docs/examples/patching.html +++ b/en/docs/examples/patching.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/examples/versioning.getting-started.html b/en/docs/examples/versioning.getting-started.html index afbeeecca..43ffd9603 100644 --- a/en/docs/examples/versioning.getting-started.html +++ b/en/docs/examples/versioning.getting-started.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/cmake-guidelines.html b/en/docs/maintainers/cmake-guidelines.html index a34860ce2..a2fa74902 100644 --- a/en/docs/maintainers/cmake-guidelines.html +++ b/en/docs/maintainers/cmake-guidelines.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    @@ -243,7 +244,7 @@

    The Guidelines

    Always check for ARGN or arg_UNPARSED_ARGUMENTS. FATAL_ERROR when possible, WARNING if necessary for backwards compatibility.
  • All cmake_parse_arguments must use PARSE_ARGV.
  • -
  • All foreach loops must use IN LISTS and IN ITEMS.
  • +
  • All foreach loops must use IN LISTS, IN ITEMS, or RANGE.
  • The variables ${ARGV} and ${ARGN} are unreferenced, except in helpful messages to the user.
    • (i.e., message(FATAL_ERROR "blah was passed extra arguments: ${ARGN}"))
  • @@ -253,27 +254,68 @@

    The Guidelines

  • Exception: vcpkg.cmake's find_package.
  • Scripts in the scripts tree should not be expected to need observable changes as part of normal operation.
      -
    • Example violation: vcpkg_acquire_msys() has hard-coded packages and versions that need updating over time due to the MSYS project dropping old packages.
    • -
    • Example exception: vcpkg_from_sourceforge() has a list of mirrors which needs maintenance but does not have an observable behavior impact on the callers.
  • -
  • All variable expansions are in quotes "", -except those which are intended to be passed as multiple arguments.
      -
    • Example:
  • - -
      set(working_directory "")
    -  if(DEFINED arg_WORKING_DIRECTORY)
    -    set(working_directory "WORKING_DIRECTORY" "${arg_WORKING_DIRECTORY}")
    -  endif()
    -  # calls do_the_thing() if NOT DEFINED arg_WORKING_DIRECTORY,
    -  # else calls do_the_thing(WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}")
    -  do_the_thing(${working_directory})
    -
      +
    • Example violation: vcpkg_acquire_msys() has hard-coded packages and versions +that need updating over time due to the MSYS project dropping old packages.
    • +
    • Example exception: vcpkg_from_sourceforge() has a list of mirrors which +needs maintenance, but does not have an observable behavior impact on the callers.
    +
  • Rules for quoting: there are three kinds of arguments in CMake - +unquoted (foo(BAR)), quoted (foo("BAR")), and bracketed (foo([[BAR]])). +Follow these rules to quote correctly:
      +
    • If an argument contains a variable expansion ${...}, +it must be quoted.
    • +
    • Exception: a "splat" variable expansion, when one variable will be +passed to a function as multiple arguments. In this case, the argument +should simply be ${foo}: +cmake +vcpkg_list(SET working_directory) +if(DEFINED "arg_WORKING_DIRECTORY") +vcpkg_list(SET working_directory WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}") +endif() +# calls do_the_thing() if NOT DEFINED arg_WORKING_DIRECTORY, +# else calls do_the_thing(WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}") +do_the_thing(${working_directory}) +
    • +
    • Otherwise, if the argument contains any escape sequences that are not +\\, \", or \$, that argument must be a quoted argument.
    • +
    • For example: "foo\nbar" must be quoted.
    • +
    • Otherwise, if the argument contains a \, a ", or a $, +that argument should be bracketed.
    • +
    • Example: +cmake +set(x [[foo\bar]]) +set(y [=[foo([[bar\baz]])]=]) +
    • +
    • Otherwise, if the argument contains characters that are +not alphanumeric or _, that argument should be quoted.
    • +
    • Otherwise, the argument should be unquoted.
    • +
    • Exception: arguments to if() of type <variable|string> should always be quoted:
    • +
    • Both arguments to the comparison operators - +EQUAL, STREQUAL, VERSION_LESS, etc.
    • +
    • The first argument to MATCHES and IN_LIST
    • +
    • Example: +cmake +if("${FOO}" STREQUAL "BAR") # ... +if("${BAZ}" EQUAL "0") # ... +if("FOO" IN_LIST list_variable) # ... +if("${bar}" MATCHES [[a[bcd]+\.[bcd]+]]) # ... +
    • +
    • For single expressions and for other types of predicates that do not +take <variable|string>, use the normal rules.
  • There are no "pointer" or "in-out" parameters (where a user passes a variable name rather than the contents), except for simple out-parameters.
  • Variables are not assumed to be empty. If the variable is intended to be used locally, -it must be explicitly initialized to empty with set(foo "").
  • -
  • All variables expected to be inherited from the parent scope across an API boundary (i.e. not a file-local function) should be documented. Note that all variables mentioned in triplets.md are considered documented.
  • +it must be explicitly initialized to empty with set(foo "") if it is a string variable, +and vcpkg_list(SET foo) if it is a list variable. +
  • set(var) should not be used. Use unset(var) to unset a variable, +set(var "") to set it to the empty string, +and vcpkg_list(SET var) to set it to the empty list. +Note: the empty string and the empty list are the same value; +this is a notational difference rather than a difference in result
  • +
  • All variables expected to be inherited from the parent scope across an API boundary +(i.e. not a file-local function) should be documented. +Note that all variables mentioned in triplets.md are considered documented.
  • Out parameters are only set in PARENT_SCOPE and are never read. See also the helper z_vcpkg_forward_output_variable() to forward out parameters through a function scope.
  • CACHE variables are used only for global variables which are shared internally among strongly coupled @@ -288,16 +330,14 @@

    The Guidelines

    and <start> must always be less than or equal to <stop>.
    • This must be checked by something like:
  • -
      if(start LESS_EQUAL end)
    -    foreach(RANGE start end)
    +
      if("${start}" LESS_EQUAL "${end}")
    +    foreach(RANGE "${start}" "${end}")
           ...
         endforeach()
       endif()
    • All port-based scripts must use include_guard(GLOBAL) to avoid being included multiple times.
    • -
    • set(var) should not be used. Use unset(var) to unset a variable, -and set(var "") to set it to the empty value. Note: this works for use as a list and as a string

    CMake Versions to Require

    Table of Contents
    diff --git a/en/docs/maintainers/execute_process.html b/en/docs/maintainers/execute_process.html index b7b9a0f3e..a5590ead4 100644 --- a/en/docs/maintainers/execute_process.html +++ b/en/docs/maintainers/execute_process.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/internal/vcpkg_internal_get_cmake_vars.html b/en/docs/maintainers/internal/vcpkg_internal_get_cmake_vars.html index fdf7c3151..deee4d19c 100644 --- a/en/docs/maintainers/internal/vcpkg_internal_get_cmake_vars.html +++ b/en/docs/maintainers/internal/vcpkg_internal_get_cmake_vars.html @@ -71,18 +71,18 @@ -
  • Cmake Guidelines
  • -
  • Control Files
  • +
  • CMake Guidelines
  • +
  • CONTROL files
  • execute_process
  • -
  • Maintainer Guide
  • -
  • Manifest Files
  • +
  • Maintainer Guidelines and Policies
  • +
  • Manifest files - vcpkg.json
  • Portfile Functions
  • Pr Review Checklist
  • -
  • registries
  • +
  • Creating Registries
  • vcpkg_acquire_msys
  • vcpkg_add_to_path
  • vcpkg_apply_patches
  • @@ -178,34 +178,34 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/internal/z_vcpkg_apply_patches.html b/en/docs/maintainers/internal/z_vcpkg_apply_patches.html index 7a7124e17..a16edbaaf 100644 --- a/en/docs/maintainers/internal/z_vcpkg_apply_patches.html +++ b/en/docs/maintainers/internal/z_vcpkg_apply_patches.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/internal/z_vcpkg_forward_output_variable.html b/en/docs/maintainers/internal/z_vcpkg_forward_output_variable.html index df40be938..808d50fe4 100644 --- a/en/docs/maintainers/internal/z_vcpkg_forward_output_variable.html +++ b/en/docs/maintainers/internal/z_vcpkg_forward_output_variable.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/internal/z_vcpkg_function_arguments.html b/en/docs/maintainers/internal/z_vcpkg_function_arguments.html index bd49d1b9a..25c5e38a0 100644 --- a/en/docs/maintainers/internal/z_vcpkg_function_arguments.html +++ b/en/docs/maintainers/internal/z_vcpkg_function_arguments.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/internal/z_vcpkg_get_cmake_vars.html b/en/docs/maintainers/internal/z_vcpkg_get_cmake_vars.html new file mode 100644 index 000000000..3252e5a4c --- /dev/null +++ b/en/docs/maintainers/internal/z_vcpkg_get_cmake_vars.html @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    Table of Contents
    +

    z_vcpkg_get_cmake_vars

    +

    The latest version of this document lives in the vcpkg repo.

    +

    Only for internal use in vcpkg helpers. Behavior and arguments will change without notice. +Runs a cmake configure with a dummy project to extract certain cmake variables

    +

    Usage

    +
    z_vcpkg_get_cmake_vars(<out-var>)
    +

    z_vcpkg_get_cmake_vars(cmake_vars_file) sets <out-var> to +a path to a generated CMake file, with the detected CMAKE_* variables +re-exported as VCPKG_DETECTED_*.

    +

    Notes

    +

    Avoid usage in portfiles.

    +

    All calls to z_vcpkg_get_cmake_vars will result in the same output file; +the output file is not generated multiple times.

    +

    Examples

    + +

    Basic Usage

    +
    z_vcpkg_get_cmake_vars(cmake_vars_file)
    +include("${cmake_vars_file}")
    +message(STATUS "detected CXX flags: ${VCPKG_DETECTED_CXX_FLAGS}")
    +

    Source

    +

    scripts/cmake/z_vcpkg_get_cmake_vars.cmake

    +
    diff --git a/en/docs/maintainers/internal/z_vcpkg_prettify_command_line.html b/en/docs/maintainers/internal/z_vcpkg_prettify_command_line.html index 1e4a17c4f..716c6565d 100644 --- a/en/docs/maintainers/internal/z_vcpkg_prettify_command_line.html +++ b/en/docs/maintainers/internal/z_vcpkg_prettify_command_line.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/maintainer-guide.html b/en/docs/maintainers/maintainer-guide.html index f85bcdf15..dc17a2d43 100644 --- a/en/docs/maintainers/maintainer-guide.html +++ b/en/docs/maintainers/maintainer-guide.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/manifest-files.html b/en/docs/maintainers/manifest-files.html index 6ff5794a2..987009c44 100644 --- a/en/docs/maintainers/manifest-files.html +++ b/en/docs/maintainers/manifest-files.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/portfile-functions.html b/en/docs/maintainers/portfile-functions.html index ec4a91fd9..106b14007 100644 --- a/en/docs/maintainers/portfile-functions.html +++ b/en/docs/maintainers/portfile-functions.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    @@ -268,10 +269,10 @@

    Portfile helper functions

    Internal Functions

    Scripts from Ports

    @@ -279,6 +280,7 @@

    vcpkg-cm

    vcpkg-cmake-config

    diff --git a/en/docs/maintainers/ports/vcpkg-cmake-config.html b/en/docs/maintainers/ports/vcpkg-cmake-config.html index 965928a88..8c94c868d 100644 --- a/en/docs/maintainers/ports/vcpkg-cmake-config.html +++ b/en/docs/maintainers/ports/vcpkg-cmake-config.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.html b/en/docs/maintainers/ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.html index eaf6fe947..dc7997776 100644 --- a/en/docs/maintainers/ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.html +++ b/en/docs/maintainers/ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/ports/vcpkg-cmake.html b/en/docs/maintainers/ports/vcpkg-cmake.html index aa844d360..0468c88a0 100644 --- a/en/docs/maintainers/ports/vcpkg-cmake.html +++ b/en/docs/maintainers/ports/vcpkg-cmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_build.html b/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_build.html index 925a4aa0f..09c63301c 100644 --- a/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_build.html +++ b/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_build.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.html b/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.html index b4a52f52b..e8e6918d5 100644 --- a/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.html +++ b/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    @@ -226,7 +227,7 @@

    vcpkg_cmake_configure

    [OPTIONS_DEBUG <configure-setting>...] [MAYBE_UNUSED_VARIABLES - <variable-name>...] + <option-name>...] )

    vcpkg_cmake_configure configures a CMake build system for use with vcpkg_cmake_buildsystem_build and vcpkg_cmake_buildsystem_install. @@ -258,7 +259,15 @@

    vcpkg_cmake_configure

    This function makes certain that all options passed in are used by the underlying CMake build system. If there are options that might be unused, perhaps on certain platforms, pass those variable names to -MAYBE_UNUSED_VARIABLES.

    +MAYBE_UNUSED_VARIABLES. For example:

    +
    vcpkg_cmake_configure(
    +    ...
    +    OPTIONS
    +        -DBUILD_EXAMPLE=OFF
    +    ...
    +    MAYBE_UNUSED_VARIABLES
    +        BUILD_EXAMPLE
    +)

    LOGFILE_BASE is used to set the base of the logfile names; by default, this is config, and thus the logfiles end up being something like config-x86-windows-dbg.log. You can set it to anything you like; diff --git a/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_get_vars.html b/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_get_vars.html new file mode 100644 index 000000000..cacbc7831 --- /dev/null +++ b/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_get_vars.html @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    +
    +
    Table of Contents
    +

    vcpkg_cmake_get_vars

    +

    The latest version of this document lives in the vcpkg repo.

    +

    Runs a cmake configure with a dummy project to extract certain cmake variables

    +

    Usage

    +
    vcpkg_cmake_get_vars(<out-var>)
    +

    vcpkg_cmake_get_vars(<out-var>) sets <out-var> to +a path to a generated CMake file, with the detected CMAKE_* variables +re-exported as VCPKG_DETECTED_CMAKE_*.

    +

    Notes

    +

    Avoid usage in portfiles.

    +

    All calls to vcpkg_cmake_get_vars will result in the same output file; +the output file is not generated multiple times.

    +

    Basic Usage

    +
    vcpkg_cmake_get_vars(cmake_vars_file)
    +include("${cmake_vars_file}")
    +message(STATUS "detected CXX flags: ${VCPKG_DETECTED_CMAKE_CXX_FLAGS}")
    +

    Source

    +

    ports/vcpkg-cmake/vcpkg_cmake_get_vars.cmake

    +
    diff --git a/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_install.html b/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_install.html index 804027fb1..c6d5b7ad8 100644 --- a/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_install.html +++ b/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_install.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/ports/vcpkg-pkgconfig-get-modules.html b/en/docs/maintainers/ports/vcpkg-pkgconfig-get-modules.html index d4c9eb314..45e900372 100644 --- a/en/docs/maintainers/ports/vcpkg-pkgconfig-get-modules.html +++ b/en/docs/maintainers/ports/vcpkg-pkgconfig-get-modules.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.html b/en/docs/maintainers/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.html index 800386d87..722a6c2e1 100644 --- a/en/docs/maintainers/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.html +++ b/en/docs/maintainers/ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/pr-review-checklist.html b/en/docs/maintainers/pr-review-checklist.html index 01d2c958e..7c15c9b1e 100644 --- a/en/docs/maintainers/pr-review-checklist.html +++ b/en/docs/maintainers/pr-review-checklist.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/registries.html b/en/docs/maintainers/registries.html index 7c203e4ff..742ba9085 100644 --- a/en/docs/maintainers/registries.html +++ b/en/docs/maintainers/registries.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_acquire_msys.html b/en/docs/maintainers/vcpkg_acquire_msys.html index 39ef9b4cd..c8c6e76c1 100644 --- a/en/docs/maintainers/vcpkg_acquire_msys.html +++ b/en/docs/maintainers/vcpkg_acquire_msys.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_add_to_path.html b/en/docs/maintainers/vcpkg_add_to_path.html index 5127eee09..772c367b1 100644 --- a/en/docs/maintainers/vcpkg_add_to_path.html +++ b/en/docs/maintainers/vcpkg_add_to_path.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_apply_patches.html b/en/docs/maintainers/vcpkg_apply_patches.html index 01f5edf2f..e40c4ca79 100644 --- a/en/docs/maintainers/vcpkg_apply_patches.html +++ b/en/docs/maintainers/vcpkg_apply_patches.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_build_cmake.html b/en/docs/maintainers/vcpkg_build_cmake.html index 89d5c052a..72ecd6edb 100644 --- a/en/docs/maintainers/vcpkg_build_cmake.html +++ b/en/docs/maintainers/vcpkg_build_cmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_build_make.html b/en/docs/maintainers/vcpkg_build_make.html index 8008be2d2..216d9d7cf 100644 --- a/en/docs/maintainers/vcpkg_build_make.html +++ b/en/docs/maintainers/vcpkg_build_make.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_build_msbuild.html b/en/docs/maintainers/vcpkg_build_msbuild.html index 8c5c01e6d..9e06ea71d 100644 --- a/en/docs/maintainers/vcpkg_build_msbuild.html +++ b/en/docs/maintainers/vcpkg_build_msbuild.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_build_ninja.html b/en/docs/maintainers/vcpkg_build_ninja.html index a051ecaa7..43f4dfe96 100644 --- a/en/docs/maintainers/vcpkg_build_ninja.html +++ b/en/docs/maintainers/vcpkg_build_ninja.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_build_nmake.html b/en/docs/maintainers/vcpkg_build_nmake.html index a1a90ba51..9eb973ad7 100644 --- a/en/docs/maintainers/vcpkg_build_nmake.html +++ b/en/docs/maintainers/vcpkg_build_nmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_build_qmake.html b/en/docs/maintainers/vcpkg_build_qmake.html index 28a6a6ffa..4fe8cac92 100644 --- a/en/docs/maintainers/vcpkg_build_qmake.html +++ b/en/docs/maintainers/vcpkg_build_qmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_buildpath_length_warning.html b/en/docs/maintainers/vcpkg_buildpath_length_warning.html index d1d3566a4..a3d9bf510 100644 --- a/en/docs/maintainers/vcpkg_buildpath_length_warning.html +++ b/en/docs/maintainers/vcpkg_buildpath_length_warning.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_check_features.html b/en/docs/maintainers/vcpkg_check_features.html index 1a5e03e18..498caa0bf 100644 --- a/en/docs/maintainers/vcpkg_check_features.html +++ b/en/docs/maintainers/vcpkg_check_features.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_check_linkage.html b/en/docs/maintainers/vcpkg_check_linkage.html index aee2981d5..89f512277 100644 --- a/en/docs/maintainers/vcpkg_check_linkage.html +++ b/en/docs/maintainers/vcpkg_check_linkage.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_clean_executables_in_bin.html b/en/docs/maintainers/vcpkg_clean_executables_in_bin.html index aa22a236f..fc1f8d4c0 100644 --- a/en/docs/maintainers/vcpkg_clean_executables_in_bin.html +++ b/en/docs/maintainers/vcpkg_clean_executables_in_bin.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_clean_msbuild.html b/en/docs/maintainers/vcpkg_clean_msbuild.html index bbb0fd8b5..6d178033b 100644 --- a/en/docs/maintainers/vcpkg_clean_msbuild.html +++ b/en/docs/maintainers/vcpkg_clean_msbuild.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_common_definitions.html b/en/docs/maintainers/vcpkg_common_definitions.html index f2ff20655..1e095463f 100644 --- a/en/docs/maintainers/vcpkg_common_definitions.html +++ b/en/docs/maintainers/vcpkg_common_definitions.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_configure_cmake.html b/en/docs/maintainers/vcpkg_configure_cmake.html index 47a81de8e..5220b10e4 100644 --- a/en/docs/maintainers/vcpkg_configure_cmake.html +++ b/en/docs/maintainers/vcpkg_configure_cmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    @@ -223,7 +224,7 @@

    Usage

    [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] [OPTIONS_RELEASE <-DOPTIMIZE=1>...] [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] - [MAYBE_UNUSED_VARIABLES <option-name>...] + [MAYBE_UNUSED_VARIABLES <OPTION_NAME>...] )

    Parameters

    SOURCE_PATH

    @@ -250,7 +251,16 @@

    OPTIONS_RELEASE

    OPTIONS_DEBUG

    Additional options passed to CMake during the Debug configuration. These are in addition to OPTIONS.

    MAYBE_UNUSED_VARIABLES

    -

    Any CMake variables which are explicitly passed in, but which may not be used on all platforms.

    +

    Any CMake variables which are explicitly passed in, but which may not be used on all platforms. +For example:

    +
    vcpkg_cmake_configure(
    +    ...
    +    OPTIONS
    +        -DBUILD_EXAMPLE=OFF
    +    ...
    +    MAYBE_UNUSED_VARIABLES
    +        BUILD_EXAMPLE
    +)

    LOGNAME

    Name of the log to write the output of the configure call to.

    Notes

    diff --git a/en/docs/maintainers/vcpkg_configure_gn.html b/en/docs/maintainers/vcpkg_configure_gn.html index f4c6a1b7d..18a9c0b6a 100644 --- a/en/docs/maintainers/vcpkg_configure_gn.html +++ b/en/docs/maintainers/vcpkg_configure_gn.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_configure_make.html b/en/docs/maintainers/vcpkg_configure_make.html index 719eb5e02..0faab597d 100644 --- a/en/docs/maintainers/vcpkg_configure_make.html +++ b/en/docs/maintainers/vcpkg_configure_make.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_configure_meson.html b/en/docs/maintainers/vcpkg_configure_meson.html index 099a2879f..5fc88a44a 100644 --- a/en/docs/maintainers/vcpkg_configure_meson.html +++ b/en/docs/maintainers/vcpkg_configure_meson.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_configure_qmake.html b/en/docs/maintainers/vcpkg_configure_qmake.html index cfc1365c7..77937f4ea 100644 --- a/en/docs/maintainers/vcpkg_configure_qmake.html +++ b/en/docs/maintainers/vcpkg_configure_qmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_copy_pdbs.html b/en/docs/maintainers/vcpkg_copy_pdbs.html index 37e32c364..b9cd9d18e 100644 --- a/en/docs/maintainers/vcpkg_copy_pdbs.html +++ b/en/docs/maintainers/vcpkg_copy_pdbs.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_copy_tool_dependencies.html b/en/docs/maintainers/vcpkg_copy_tool_dependencies.html index bf7e3b770..166d05e85 100644 --- a/en/docs/maintainers/vcpkg_copy_tool_dependencies.html +++ b/en/docs/maintainers/vcpkg_copy_tool_dependencies.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_copy_tools.html b/en/docs/maintainers/vcpkg_copy_tools.html index 56ddda2e0..88b46655e 100644 --- a/en/docs/maintainers/vcpkg_copy_tools.html +++ b/en/docs/maintainers/vcpkg_copy_tools.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_download_distfile.html b/en/docs/maintainers/vcpkg_download_distfile.html index ee33a1910..bc0e6f237 100644 --- a/en/docs/maintainers/vcpkg_download_distfile.html +++ b/en/docs/maintainers/vcpkg_download_distfile.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_execute_build_process.html b/en/docs/maintainers/vcpkg_execute_build_process.html index e85fc2aef..fefcaf38b 100644 --- a/en/docs/maintainers/vcpkg_execute_build_process.html +++ b/en/docs/maintainers/vcpkg_execute_build_process.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_execute_in_download_mode.html b/en/docs/maintainers/vcpkg_execute_in_download_mode.html index d60866d2f..c2bbeaeb2 100644 --- a/en/docs/maintainers/vcpkg_execute_in_download_mode.html +++ b/en/docs/maintainers/vcpkg_execute_in_download_mode.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_execute_required_process.html b/en/docs/maintainers/vcpkg_execute_required_process.html index a9336c814..9a5b68906 100644 --- a/en/docs/maintainers/vcpkg_execute_required_process.html +++ b/en/docs/maintainers/vcpkg_execute_required_process.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_execute_required_process_repeat.html b/en/docs/maintainers/vcpkg_execute_required_process_repeat.html index b8a85cf53..0504bac5b 100644 --- a/en/docs/maintainers/vcpkg_execute_required_process_repeat.html +++ b/en/docs/maintainers/vcpkg_execute_required_process_repeat.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_extract_source_archive.html b/en/docs/maintainers/vcpkg_extract_source_archive.html index 73a2b9276..52f9afea9 100644 --- a/en/docs/maintainers/vcpkg_extract_source_archive.html +++ b/en/docs/maintainers/vcpkg_extract_source_archive.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_extract_source_archive_ex.html b/en/docs/maintainers/vcpkg_extract_source_archive_ex.html index 949940ccd..80633f999 100644 --- a/en/docs/maintainers/vcpkg_extract_source_archive_ex.html +++ b/en/docs/maintainers/vcpkg_extract_source_archive_ex.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_fail_port_install.html b/en/docs/maintainers/vcpkg_fail_port_install.html index 792ec9e95..d1915f2a8 100644 --- a/en/docs/maintainers/vcpkg_fail_port_install.html +++ b/en/docs/maintainers/vcpkg_fail_port_install.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_find_acquire_program.html b/en/docs/maintainers/vcpkg_find_acquire_program.html index 1554b7771..0446d70ce 100644 --- a/en/docs/maintainers/vcpkg_find_acquire_program.html +++ b/en/docs/maintainers/vcpkg_find_acquire_program.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_find_fortran.html b/en/docs/maintainers/vcpkg_find_fortran.html index c85da3ca9..140fb0bc1 100644 --- a/en/docs/maintainers/vcpkg_find_fortran.html +++ b/en/docs/maintainers/vcpkg_find_fortran.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_fixup_cmake_targets.html b/en/docs/maintainers/vcpkg_fixup_cmake_targets.html index ab2057b3b..a92a53a2b 100644 --- a/en/docs/maintainers/vcpkg_fixup_cmake_targets.html +++ b/en/docs/maintainers/vcpkg_fixup_cmake_targets.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_fixup_pkgconfig.html b/en/docs/maintainers/vcpkg_fixup_pkgconfig.html index f005e397b..b31e8f731 100644 --- a/en/docs/maintainers/vcpkg_fixup_pkgconfig.html +++ b/en/docs/maintainers/vcpkg_fixup_pkgconfig.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_from_bitbucket.html b/en/docs/maintainers/vcpkg_from_bitbucket.html index cee6146fe..2f6446282 100644 --- a/en/docs/maintainers/vcpkg_from_bitbucket.html +++ b/en/docs/maintainers/vcpkg_from_bitbucket.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_from_git.html b/en/docs/maintainers/vcpkg_from_git.html index 4c30195c5..14a77e9bd 100644 --- a/en/docs/maintainers/vcpkg_from_git.html +++ b/en/docs/maintainers/vcpkg_from_git.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_from_github.html b/en/docs/maintainers/vcpkg_from_github.html index 9a6d3325b..802a4af24 100644 --- a/en/docs/maintainers/vcpkg_from_github.html +++ b/en/docs/maintainers/vcpkg_from_github.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_from_gitlab.html b/en/docs/maintainers/vcpkg_from_gitlab.html index aa3aa7bdb..8875a0407 100644 --- a/en/docs/maintainers/vcpkg_from_gitlab.html +++ b/en/docs/maintainers/vcpkg_from_gitlab.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_from_sourceforge.html b/en/docs/maintainers/vcpkg_from_sourceforge.html index f8a861e64..5ef15c277 100644 --- a/en/docs/maintainers/vcpkg_from_sourceforge.html +++ b/en/docs/maintainers/vcpkg_from_sourceforge.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_get_program_files_platform_bitness.html b/en/docs/maintainers/vcpkg_get_program_files_platform_bitness.html index bea680d3d..80214968a 100644 --- a/en/docs/maintainers/vcpkg_get_program_files_platform_bitness.html +++ b/en/docs/maintainers/vcpkg_get_program_files_platform_bitness.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_get_windows_sdk.html b/en/docs/maintainers/vcpkg_get_windows_sdk.html index 5e21fd7b1..eb016af30 100644 --- a/en/docs/maintainers/vcpkg_get_windows_sdk.html +++ b/en/docs/maintainers/vcpkg_get_windows_sdk.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_install_cmake.html b/en/docs/maintainers/vcpkg_install_cmake.html index 2910f09dc..bb893a044 100644 --- a/en/docs/maintainers/vcpkg_install_cmake.html +++ b/en/docs/maintainers/vcpkg_install_cmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_install_gn.html b/en/docs/maintainers/vcpkg_install_gn.html index d71efa227..6627a3690 100644 --- a/en/docs/maintainers/vcpkg_install_gn.html +++ b/en/docs/maintainers/vcpkg_install_gn.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_install_make.html b/en/docs/maintainers/vcpkg_install_make.html index 7b9b0334d..6fbd69c91 100644 --- a/en/docs/maintainers/vcpkg_install_make.html +++ b/en/docs/maintainers/vcpkg_install_make.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_install_meson.html b/en/docs/maintainers/vcpkg_install_meson.html index 38df1591b..6f78c1f82 100644 --- a/en/docs/maintainers/vcpkg_install_meson.html +++ b/en/docs/maintainers/vcpkg_install_meson.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_install_msbuild.html b/en/docs/maintainers/vcpkg_install_msbuild.html index 88a1d5878..edec4a584 100644 --- a/en/docs/maintainers/vcpkg_install_msbuild.html +++ b/en/docs/maintainers/vcpkg_install_msbuild.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_install_nmake.html b/en/docs/maintainers/vcpkg_install_nmake.html index b88ddab87..3a9b104f1 100644 --- a/en/docs/maintainers/vcpkg_install_nmake.html +++ b/en/docs/maintainers/vcpkg_install_nmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_install_qmake.html b/en/docs/maintainers/vcpkg_install_qmake.html index 720a009af..8aca7b734 100644 --- a/en/docs/maintainers/vcpkg_install_qmake.html +++ b/en/docs/maintainers/vcpkg_install_qmake.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_list.html b/en/docs/maintainers/vcpkg_list.html index afe30b14a..3b67abf41 100644 --- a/en/docs/maintainers/vcpkg_list.html +++ b/en/docs/maintainers/vcpkg_list.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_minimum_required.html b/en/docs/maintainers/vcpkg_minimum_required.html index 130b295f4..23b9c3752 100644 --- a/en/docs/maintainers/vcpkg_minimum_required.html +++ b/en/docs/maintainers/vcpkg_minimum_required.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/maintainers/vcpkg_replace_string.html b/en/docs/maintainers/vcpkg_replace_string.html index e55ebc474..6ac5ae3ab 100644 --- a/en/docs/maintainers/vcpkg_replace_string.html +++ b/en/docs/maintainers/vcpkg_replace_string.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/binarycaching.html b/en/docs/specifications/binarycaching.html index 7d734285c..e5d510480 100644 --- a/en/docs/specifications/binarycaching.html +++ b/en/docs/specifications/binarycaching.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/export-command.html b/en/docs/specifications/export-command.html index deb5c0754..69c38de39 100644 --- a/en/docs/specifications/export-command.html +++ b/en/docs/specifications/export-command.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/feature-packages.html b/en/docs/specifications/feature-packages.html index df251f9c6..0008b4e3c 100644 --- a/en/docs/specifications/feature-packages.html +++ b/en/docs/specifications/feature-packages.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/manifests.html b/en/docs/specifications/manifests.html index e6ab7c031..67a9fad14 100644 --- a/en/docs/specifications/manifests.html +++ b/en/docs/specifications/manifests.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/ports-overlay.html b/en/docs/specifications/ports-overlay.html index bb234e948..89caecd85 100644 --- a/en/docs/specifications/ports-overlay.html +++ b/en/docs/specifications/ports-overlay.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/prefab.html b/en/docs/specifications/prefab.html index d6b3fcb8c..098c7d829 100644 --- a/en/docs/specifications/prefab.html +++ b/en/docs/specifications/prefab.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/registries-2.html b/en/docs/specifications/registries-2.html index 13102d26d..9d06a4714 100644 --- a/en/docs/specifications/registries-2.html +++ b/en/docs/specifications/registries-2.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/registries.html b/en/docs/specifications/registries.html index 04d1a6e6c..de9e9c65c 100644 --- a/en/docs/specifications/registries.html +++ b/en/docs/specifications/registries.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/scripts-extraction.html b/en/docs/specifications/scripts-extraction.html index 2ace50896..0ab61baad 100644 --- a/en/docs/specifications/scripts-extraction.html +++ b/en/docs/specifications/scripts-extraction.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/specifications/versioning.html b/en/docs/specifications/versioning.html index 7b83a0f4c..c426003af 100644 --- a/en/docs/specifications/versioning.html +++ b/en/docs/specifications/versioning.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/android.html b/en/docs/users/android.html index 6c46a91cf..b4d7fc60d 100644 --- a/en/docs/users/android.html +++ b/en/docs/users/android.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/assetcaching.html b/en/docs/users/assetcaching.html index 1d551577e..bca270e75 100644 --- a/en/docs/users/assetcaching.html +++ b/en/docs/users/assetcaching.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/binarycaching.html b/en/docs/users/binarycaching.html index 397966daa..02881ffcd 100644 --- a/en/docs/users/binarycaching.html +++ b/en/docs/users/binarycaching.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/config-environment.html b/en/docs/users/config-environment.html index 8c534da1b..70c0ae46b 100644 --- a/en/docs/users/config-environment.html +++ b/en/docs/users/config-environment.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/host-dependencies.html b/en/docs/users/host-dependencies.html index 0d7010275..30fb82555 100644 --- a/en/docs/users/host-dependencies.html +++ b/en/docs/users/host-dependencies.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/integration.html b/en/docs/users/integration.html index 2c06ce3e8..c82392742 100644 --- a/en/docs/users/integration.html +++ b/en/docs/users/integration.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/manifests.html b/en/docs/users/manifests.html index 150bd4369..07651f681 100644 --- a/en/docs/users/manifests.html +++ b/en/docs/users/manifests.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/mingw.html b/en/docs/users/mingw.html index 61f8eda17..b23b59a10 100644 --- a/en/docs/users/mingw.html +++ b/en/docs/users/mingw.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/registries.html b/en/docs/users/registries.html index 280e95bd2..9bd296c88 100644 --- a/en/docs/users/registries.html +++ b/en/docs/users/registries.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/selecting-library-features.html b/en/docs/users/selecting-library-features.html index e1aeca274..e985172f9 100644 --- a/en/docs/users/selecting-library-features.html +++ b/en/docs/users/selecting-library-features.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    -

    Selecting library features

    +

    Selecting Library Features

    The latest version of this documentation is available on GitHub.

    Installing a library

    We will look at llvm as an example. You could install it using:

    diff --git a/en/docs/users/triplets.html b/en/docs/users/triplets.html index da7ecfb9e..62bdfc28b 100644 --- a/en/docs/users/triplets.html +++ b/en/docs/users/triplets.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    -

    Triplet files

    +

    Triplet Files

    The latest version of this documentation is available on GitHub.

    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 an imaginary "target configuration set" for every library. Within a triplet, libraries are generally built with the same configuration, but it is not a requirement. For example, you could have one triplet that builds openssl statically and zlib dynamically, one that builds them both statically, and one that builds them both dynamically (all for the same target OS and architecture). A single build will consume files from a single triplet.

    diff --git a/en/docs/users/versioning.html b/en/docs/users/versioning.html index 1ff295179..8c2f349a5 100644 --- a/en/docs/users/versioning.html +++ b/en/docs/users/versioning.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/users/versioning.implementation-details.html b/en/docs/users/versioning.implementation-details.html index d4b0a61be..ec6ba2753 100644 --- a/en/docs/users/versioning.implementation-details.html +++ b/en/docs/users/versioning.implementation-details.html @@ -71,28 +71,28 @@
  • -
  • README
  • +
  • Quick Start
  • Table of Contents
    diff --git a/en/docs/vcpkg-docs.json b/en/docs/vcpkg-docs.json index 8487381a6..0a9d48926 100644 --- a/en/docs/vcpkg-docs.json +++ b/en/docs/vcpkg-docs.json @@ -62,13 +62,13 @@ { "Path": "/en/docs/users/selecting-library-features.html", "Name": "Selecting Library Features", - "Source": "# Selecting library features\n\n**The latest version of this documentation is available on [GitHub](https://github.com/Microsoft/vcpkg/tree/master/docs/users/selecting-library-features.md).**\n\n## Installing a library\n\nWe will look at [llvm](https://llvm.org/) as an example. You could install it using:\n\n```powershell\n> vcpkg install llvm\n```\nor via a manifest with\n```json\n{\n \"dependencies\": [\"llvm\"]\n}\n```\n\nWith llvm now installed, we can execute:\n\n```powershell\n> installed\\x86-windows\\bin\\llc.exe --version\n```\n\nwe see:\n\n```powershell\n Registered Targets:\n x86 - 32-bit X86: Pentium-Pro and above\n x86-64 - 64-bit X86: EM64T and AMD64\n```\n\n## Installing additional features\n\nBut [llvm supports many more targets](https://llvm.org/docs/GettingStarted.html#local-llvm-configuration), from ARM to SPARC to SystemZ.\nHowever, clearly our current installation doesn't include ARM as a target;\nthus, we need to learn how vcpkg allows us to install other LLVM targets.\nThe llvm port allows this via the \"target-*\" features.\n\nIf we do:\n\n```powershell\n> vcpkg search llvm\n```\n\nWe can see:\n\n```\nllvm 10.0.0#6 The LLVM Compiler Infrastructure\nllvm[clang] Build C Language Family Front-end.\nllvm[clang-tools-extra] Build Clang tools.\n...\nllvm[target-all] Build with all backends.\nllvm[target-amdgpu] Build with AMDGPU backend.\nllvm[target-arm] Build with ARM backend.\n...\n```\n\nWe can install any of these targets by using the install-feature syntax:\n\n```powershell\n> vcpkg install llvm[target-arm] # Installs LLVM with the ARM target\n```\n```json\n{\n \"dependencies\": [{ \"name\": \"llvm\", \"features\": [\"target-arm\"] }]\n}\n```\n\n## Opting out of default features\n\nThe llvm port includes a few default features that you as a user may not want: for example,\nthe `clang` feature is default, which means that `vcpkg install llvm` will also build and install clang.\nIf you are writing a compiler that uses LLVM as a backend,\nyou're likely not interested in installing clang as well,\nand we can do that by disabling default features with the special `core` \"feature\":\n```powershell\n> vcpkg install llvm[core,target-arm] # removing the default-feature with \"core\" also removes all of the default targets you get\n```\nor in manifest files:\n```json\n{\n \"dependencies\": [{\n \"name\": \"llvm\",\n \"default-features\": false,\n \"features\": [\"target-arm\"]\n }]\n}\n```\n\n# Further reading\n- The [Feature Packages](../specifications/feature-packages.md) specification was the initial design for features.\n", + "Source": "# Selecting Library Features\n\n**The latest version of this documentation is available on [GitHub](https://github.com/Microsoft/vcpkg/tree/master/docs/users/selecting-library-features.md).**\n\n## Installing a library\n\nWe will look at [llvm](https://llvm.org/) as an example. You could install it using:\n\n```powershell\n> vcpkg install llvm\n```\nor via a manifest with\n```json\n{\n \"dependencies\": [\"llvm\"]\n}\n```\n\nWith llvm now installed, we can execute:\n\n```powershell\n> installed\\x86-windows\\bin\\llc.exe --version\n```\n\nwe see:\n\n```powershell\n Registered Targets:\n x86 - 32-bit X86: Pentium-Pro and above\n x86-64 - 64-bit X86: EM64T and AMD64\n```\n\n## Installing additional features\n\nBut [llvm supports many more targets](https://llvm.org/docs/GettingStarted.html#local-llvm-configuration), from ARM to SPARC to SystemZ.\nHowever, clearly our current installation doesn't include ARM as a target;\nthus, we need to learn how vcpkg allows us to install other LLVM targets.\nThe llvm port allows this via the \"target-*\" features.\n\nIf we do:\n\n```powershell\n> vcpkg search llvm\n```\n\nWe can see:\n\n```\nllvm 10.0.0#6 The LLVM Compiler Infrastructure\nllvm[clang] Build C Language Family Front-end.\nllvm[clang-tools-extra] Build Clang tools.\n...\nllvm[target-all] Build with all backends.\nllvm[target-amdgpu] Build with AMDGPU backend.\nllvm[target-arm] Build with ARM backend.\n...\n```\n\nWe can install any of these targets by using the install-feature syntax:\n\n```powershell\n> vcpkg install llvm[target-arm] # Installs LLVM with the ARM target\n```\n```json\n{\n \"dependencies\": [{ \"name\": \"llvm\", \"features\": [\"target-arm\"] }]\n}\n```\n\n## Opting out of default features\n\nThe llvm port includes a few default features that you as a user may not want: for example,\nthe `clang` feature is default, which means that `vcpkg install llvm` will also build and install clang.\nIf you are writing a compiler that uses LLVM as a backend,\nyou're likely not interested in installing clang as well,\nand we can do that by disabling default features with the special `core` \"feature\":\n```powershell\n> vcpkg install llvm[core,target-arm] # removing the default-feature with \"core\" also removes all of the default targets you get\n```\nor in manifest files:\n```json\n{\n \"dependencies\": [{\n \"name\": \"llvm\",\n \"default-features\": false,\n \"features\": [\"target-arm\"]\n }]\n}\n```\n\n# Further reading\n- The [Feature Packages](../specifications/feature-packages.md) specification was the initial design for features.\n", "Nav": "#" }, { "Path": "/en/docs/users/triplets.html", "Name": "triplets", - "Source": "# Triplet files\n\n**The latest version of this documentation is available on [GitHub](https://github.com/Microsoft/vcpkg/tree/master/docs/users/triplets.md).**\n\nTriplet 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.\n\nIn Vcpkg, we use triplets to describe an imaginary \"target configuration set\" for every library. Within a triplet, libraries are generally built with the same configuration, but it is not a requirement. For example, you could have one triplet that builds `openssl` statically and `zlib` dynamically, one that builds them both statically, and one that builds them both dynamically (all for the same target OS and architecture). A single build will consume files from a single triplet.\n\nWe currently provide many triplets by default (run `vcpkg help triplet`). However, you can easily customize or add your own by copying a built-in triplet from the `triplets\\` directory into a project local location. Then, use overlay triplets (such as [`$VCPKG_OVERLAY_TRIPLETS`](config-environment.md#vcpkg_overlay_triplets), [CMake Manifest Mode](manifests.md#vcpkg_overlay_triplets), or [MSBuild Manifest Mode](manifests.md#vcpkgadditionalinstalloptions-additional-options)) to add that directory to vcpkg. See our [overlay triplets example](../examples/overlay-triplets-linux-dynamic.md) for a more detailed walkthrough.\n\nTo change the triplet used by your project away from the default, see our [Integration Document](integration.md#triplet-selection).\n\n## Community triplets\n\nTriplets contained in the `triplets\\community` folder are not tested by continuous integration, but are commonly requested by the community.\n\nBecause we do not have continuous coverage, port updates may break compatibility with community triplets. Because of this, community involvement is paramount!\n\nWe will gladly accept and review contributions that aim to solve issues with these triplets.\n\n### Usage\n\nCommunity Triplets are enabled by default, when using a community triplet a message like the following one will be printed during a package install:\n\n```no-highlight\n-- Using community triplet x86-uwp. This triplet configuration is not guaranteed to succeed.\n-- [COMMUNITY] Loading triplet configuration from: D:\\src\\viromer\\vcpkg\\triplets\\community\\x86-uwp.cmake\n```\n\n## Variables\n### VCPKG_TARGET_ARCHITECTURE\nSpecifies the target machine architecture.\n\nValid options are `x86`, `x64`, `arm`, `arm64` and `wasm32`.\n\n### VCPKG_CRT_LINKAGE\nSpecifies the desired CRT linkage (for MSVC).\n\nValid options are `dynamic` and `static`.\n\n### VCPKG_LIBRARY_LINKAGE\nSpecifies the preferred library linkage.\n\nValid options are `dynamic` and `static`. Note that libraries can ignore this setting if they do not support the preferred linkage type.\n\n### VCPKG_CMAKE_SYSTEM_NAME\nSpecifies the target platform.\n\nValid options include any CMake system name, such as:\n- Empty (Windows Desktop for legacy reasons)\n- `WindowsStore` (Universal Windows Platform)\n- `MinGW` (Minimalist GNU for Windows)\n- `Darwin` (Mac OSX)\n- `iOS` (iOS)\n- `Linux` (Linux)\n- `Emscripten` (WebAssembly)\n\n### VCPKG_CMAKE_SYSTEM_VERSION\nSpecifies the target platform system version.\n\nThis field is optional and, if present, will be passed into the build as `CMAKE_SYSTEM_VERSION`.\n\nSee also the CMake documentation for `CMAKE_SYSTEM_VERSION`: https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_VERSION.html.\n\n### VCPKG_CHAINLOAD_TOOLCHAIN_FILE\nSpecifies an alternate CMake Toolchain file to use.\n\nThis (if set) will override all other compiler detection logic. By default, a toolchain file is selected from `scripts/toolchains/` appropriate to the platform.\n\nSee also the CMake documentation for toolchain files: https://cmake.org/cmake/help/v3.11/manual/cmake-toolchains.7.html.\n\n### VCPKG_CXX_FLAGS\nSets additional compiler flags to be used when not using `VCPKG_CHAINLOAD_TOOLCHAIN_FILE`.\n\nThis option also has forms for configuration-specific and C flags:\n- `VCPKG_CXX_FLAGS`\n- `VCPKG_CXX_FLAGS_DEBUG`\n- `VCPKG_CXX_FLAGS_RELEASE`\n- `VCPKG_C_FLAGS`\n- `VCPKG_C_FLAGS_DEBUG`\n- `VCPKG_C_FLAGS_RELEASE`\n\n### VCPKG_LINKER_FLAGS\nSets additional linker flags to be used while building dynamic libraries and\nexecutables in the absence of `VCPKG_CHAINLOAD_TOOLCHAIN_FILE`.\n\nThis option also has forms for configuration-specific flags:\n- `VCPKG_LINKER_FLAGS`\n- `VCPKG_LINKER_FLAGS_DEBUG`\n- `VCPKG_LINKER_FLAGS_RELEASE`\n\n### VCPKG_CMAKE_CONFIGURE_OPTIONS\nSet additional CMake configure options that are appended to the configure command (in [`vcpkg_cmake_configure`](../maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.md)).\n\nThis field is optional.\n\nAlso available as build-type specific `VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG` and `VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE` variables.\n\n### VCPKG_MAKE_CONFIGURE_OPTIONS\nSet additional automake / autoconf configure options that are appended to the configure command (in [`vcpkg_configure_make`](../maintainers/vcpkg_configure_make.md)).\n\nThis field is optional.\n\nFor example, to skip certain libtool checks that may errantly fail:\n```cmake\nset(VCPKG_MAKE_CONFIGURE_OPTIONS \"lt_cv_deplibs_check_method=pass_all\")\n```\n\nAlso available as build-type specific `VCPKG_MAKE_CONFIGURE_OPTIONS_DEBUG` and `VCPKG_MAKE_CONFIGURE_OPTIONS_RELEASE` variables.\n\n\n### VCPKG_DEP_INFO_OVERRIDE_VARS\nReplaces the default computed list of triplet \"Supports\" terms.\n\nThis option (if set) will override the default set of terms used for qualified dependency resolution and \"Supports\" field evaluation.\n\nSee the [`\"supports\"`](../maintainers/manifest-files.md#supports) manifest file field documentation for more details.\n\n> Implementers' Note: this list is extracted via the `vcpkg_get_dep_info` mechanism.\n\n## Windows Variables\n\n### VCPKG_ENV_PASSTHROUGH\nInstructs vcpkg to allow additional environment variables into the build process.\n\nOn Windows, vcpkg builds packages in a special clean environment that is isolated from the current command prompt to\nensure build reliability and consistency. This triplet option can be set to a list of additional environment variables\nthat will be added to the clean environment. The values of these environment variables will be hashed into the package\nabi -- to pass through environment variables without abi tracking, see `VCPKG_ENV_PASSTHROUGH_UNTRACKED`.\n\nSee also the `vcpkg env` command for how you can inspect the precise environment that will be used.\n\n> Implementers' Note: this list is extracted via the `vcpkg_get_tags` mechanism.\n\n### VCPKG_ENV_PASSTHROUGH_UNTRACKED\nInstructs vcpkg to allow additional environment variables into the build process without abi tracking.\n\nSee `VCPKG_ENV_PASSTHROUGH`.\n\n\n### VCPKG_VISUAL_STUDIO_PATH\nSpecifies the Visual Studio installation to use.\n\nTo select the precise combination of Visual Studio instance and toolset version, we walk through the following algorithm:\n1. Determine the setting for `VCPKG_VISUAL_STUDIO_PATH` from the triplet, or the environment variable `VCPKG_VISUAL_STUDIO_PATH`, or consider it unset\n2. Determine the setting for `VCPKG_PLATFORM_TOOLSET` from the triplet or consider it unset\n3. Gather a list of all pairs of Visual Studio Instances with all toolsets available in those instances\n 1. This is ordered first by instance type (Stable, Prerelease, Legacy) and then by toolset version (v142, v141, v140)\n4. Filter the list based on the settings for `VCPKG_VISUAL_STUDIO_PATH` and `VCPKG_PLATFORM_TOOLSET`.\n5. Select the best remaining option\n\nThe path should be absolute, formatted with backslashes, and have no trailing slash:\n```cmake\nset(VCPKG_VISUAL_STUDIO_PATH \"C:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\Preview\\\\Community\")\n```\n\n### VCPKG_PLATFORM_TOOLSET\nSpecifies the VS-based C/C++ compiler toolchain to use.\n\nSee [`VCPKG_VISUAL_STUDIO_PATH`](#VCPKG_VISUAL_STUDIO_PATH) for the full selection algorithm.\n\nValid settings:\n* The Visual Studio 2019 platform toolset is `v142`.\n* The Visual Studio 2017 platform toolset is `v141`.\n* The Visual Studio 2015 platform toolset is `v140`.\n\n### VCPKG_LOAD_VCVARS_ENV\nIf `VCPKG_CHAINLOAD_TOOLCHAIN_FILE` is used, VCPKG will not setup the Visual Studio environment.\nSetting `VCPKG_LOAD_VCVARS_ENV` to (true|1|on) changes this behavior so that the Visual Studio environment is setup following the same rules as if `VCPKG_CHAINLOAD_TOOLCHAIN_FILE` was not set.\n\n## MacOS Variables\n\n### VCPKG_INSTALL_NAME_DIR\nSets the install name used when building macOS dynamic libraries. Default value is `@rpath`. See the CMake documentation for [CMAKE_INSTALL_NAME_DIR](https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_NAME_DIR.html) for more information.\n\n### VCPKG_OSX_DEPLOYMENT_TARGET\nSets the minimum macOS version for compiled binaries. This also changes what versions of the macOS platform SDK that CMake will search for. See the CMake documentation for [CMAKE_OSX_DEPLOYMENT_TARGET](https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html) for more information.\n\n### VCPKG_OSX_SYSROOT\nSet the name or path of the macOS platform SDK that will be used by CMake. See the CMake documentation for [CMAKE_OSX_SYSROOT](https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_SYSROOT.html) for more information.\n\n\n### VCPKG_OSX_ARCHITECTURES\nSet the macOS / iOS target architecture which will be used by CMake. See the CMake documentation for [CMAKE_OSX_ARCHITECTURES](https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_ARCHITECTURES.html) for more information.\n\n## Per-port customization\nThe 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.\n\nExample:\n```cmake\nset(VCPKG_LIBRARY_LINKAGE static)\nif(PORT MATCHES \"qt5-\")\n set(VCPKG_LIBRARY_LINKAGE dynamic)\nendif()\n```\nThis will build all the `qt5-*` libraries as DLLs, but every other library as a static library.\n\nFor an example in a real project, see https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.\n\n## Additional Remarks\nThe default triplet when running any vcpkg command is `%VCPKG_DEFAULT_TRIPLET%` or a platform-specific choice if that environment variable is undefined.\n\n- Windows: `x86-windows`\n- Linux: `x64-linux`\n- OSX: `x64-osx`\n\nWe 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.\n\n## Android triplets\nSee [android.md](android.md)\n\n## Mingw-w64 triplets\nSee [mingw.md](mingw.md)\n", + "Source": "# Triplet Files\n\n**The latest version of this documentation is available on [GitHub](https://github.com/Microsoft/vcpkg/tree/master/docs/users/triplets.md).**\n\nTriplet 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.\n\nIn Vcpkg, we use triplets to describe an imaginary \"target configuration set\" for every library. Within a triplet, libraries are generally built with the same configuration, but it is not a requirement. For example, you could have one triplet that builds `openssl` statically and `zlib` dynamically, one that builds them both statically, and one that builds them both dynamically (all for the same target OS and architecture). A single build will consume files from a single triplet.\n\nWe currently provide many triplets by default (run `vcpkg help triplet`). However, you can easily customize or add your own by copying a built-in triplet from the `triplets\\` directory into a project local location. Then, use overlay triplets (such as [`$VCPKG_OVERLAY_TRIPLETS`](config-environment.md#vcpkg_overlay_triplets), [CMake Manifest Mode](manifests.md#vcpkg_overlay_triplets), or [MSBuild Manifest Mode](manifests.md#vcpkgadditionalinstalloptions-additional-options)) to add that directory to vcpkg. See our [overlay triplets example](../examples/overlay-triplets-linux-dynamic.md) for a more detailed walkthrough.\n\nTo change the triplet used by your project away from the default, see our [Integration Document](integration.md#triplet-selection).\n\n## Community triplets\n\nTriplets contained in the `triplets\\community` folder are not tested by continuous integration, but are commonly requested by the community.\n\nBecause we do not have continuous coverage, port updates may break compatibility with community triplets. Because of this, community involvement is paramount!\n\nWe will gladly accept and review contributions that aim to solve issues with these triplets.\n\n### Usage\n\nCommunity Triplets are enabled by default, when using a community triplet a message like the following one will be printed during a package install:\n\n```no-highlight\n-- Using community triplet x86-uwp. This triplet configuration is not guaranteed to succeed.\n-- [COMMUNITY] Loading triplet configuration from: D:\\src\\viromer\\vcpkg\\triplets\\community\\x86-uwp.cmake\n```\n\n## Variables\n### VCPKG_TARGET_ARCHITECTURE\nSpecifies the target machine architecture.\n\nValid options are `x86`, `x64`, `arm`, `arm64` and `wasm32`.\n\n### VCPKG_CRT_LINKAGE\nSpecifies the desired CRT linkage (for MSVC).\n\nValid options are `dynamic` and `static`.\n\n### VCPKG_LIBRARY_LINKAGE\nSpecifies the preferred library linkage.\n\nValid options are `dynamic` and `static`. Note that libraries can ignore this setting if they do not support the preferred linkage type.\n\n### VCPKG_CMAKE_SYSTEM_NAME\nSpecifies the target platform.\n\nValid options include any CMake system name, such as:\n- Empty (Windows Desktop for legacy reasons)\n- `WindowsStore` (Universal Windows Platform)\n- `MinGW` (Minimalist GNU for Windows)\n- `Darwin` (Mac OSX)\n- `iOS` (iOS)\n- `Linux` (Linux)\n- `Emscripten` (WebAssembly)\n\n### VCPKG_CMAKE_SYSTEM_VERSION\nSpecifies the target platform system version.\n\nThis field is optional and, if present, will be passed into the build as `CMAKE_SYSTEM_VERSION`.\n\nSee also the CMake documentation for `CMAKE_SYSTEM_VERSION`: https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_VERSION.html.\n\n### VCPKG_CHAINLOAD_TOOLCHAIN_FILE\nSpecifies an alternate CMake Toolchain file to use.\n\nThis (if set) will override all other compiler detection logic. By default, a toolchain file is selected from `scripts/toolchains/` appropriate to the platform.\n\nSee also the CMake documentation for toolchain files: https://cmake.org/cmake/help/v3.11/manual/cmake-toolchains.7.html.\n\n### VCPKG_CXX_FLAGS\nSets additional compiler flags to be used when not using `VCPKG_CHAINLOAD_TOOLCHAIN_FILE`.\n\nThis option also has forms for configuration-specific and C flags:\n- `VCPKG_CXX_FLAGS`\n- `VCPKG_CXX_FLAGS_DEBUG`\n- `VCPKG_CXX_FLAGS_RELEASE`\n- `VCPKG_C_FLAGS`\n- `VCPKG_C_FLAGS_DEBUG`\n- `VCPKG_C_FLAGS_RELEASE`\n\n### VCPKG_LINKER_FLAGS\nSets additional linker flags to be used while building dynamic libraries and\nexecutables in the absence of `VCPKG_CHAINLOAD_TOOLCHAIN_FILE`.\n\nThis option also has forms for configuration-specific flags:\n- `VCPKG_LINKER_FLAGS`\n- `VCPKG_LINKER_FLAGS_DEBUG`\n- `VCPKG_LINKER_FLAGS_RELEASE`\n\n### VCPKG_CMAKE_CONFIGURE_OPTIONS\nSet additional CMake configure options that are appended to the configure command (in [`vcpkg_cmake_configure`](../maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.md)).\n\nThis field is optional.\n\nAlso available as build-type specific `VCPKG_CMAKE_CONFIGURE_OPTIONS_DEBUG` and `VCPKG_CMAKE_CONFIGURE_OPTIONS_RELEASE` variables.\n\n### VCPKG_MAKE_CONFIGURE_OPTIONS\nSet additional automake / autoconf configure options that are appended to the configure command (in [`vcpkg_configure_make`](../maintainers/vcpkg_configure_make.md)).\n\nThis field is optional.\n\nFor example, to skip certain libtool checks that may errantly fail:\n```cmake\nset(VCPKG_MAKE_CONFIGURE_OPTIONS \"lt_cv_deplibs_check_method=pass_all\")\n```\n\nAlso available as build-type specific `VCPKG_MAKE_CONFIGURE_OPTIONS_DEBUG` and `VCPKG_MAKE_CONFIGURE_OPTIONS_RELEASE` variables.\n\n\n### VCPKG_DEP_INFO_OVERRIDE_VARS\nReplaces the default computed list of triplet \"Supports\" terms.\n\nThis option (if set) will override the default set of terms used for qualified dependency resolution and \"Supports\" field evaluation.\n\nSee the [`\"supports\"`](../maintainers/manifest-files.md#supports) manifest file field documentation for more details.\n\n> Implementers' Note: this list is extracted via the `vcpkg_get_dep_info` mechanism.\n\n## Windows Variables\n\n### VCPKG_ENV_PASSTHROUGH\nInstructs vcpkg to allow additional environment variables into the build process.\n\nOn Windows, vcpkg builds packages in a special clean environment that is isolated from the current command prompt to\nensure build reliability and consistency. This triplet option can be set to a list of additional environment variables\nthat will be added to the clean environment. The values of these environment variables will be hashed into the package\nabi -- to pass through environment variables without abi tracking, see `VCPKG_ENV_PASSTHROUGH_UNTRACKED`.\n\nSee also the `vcpkg env` command for how you can inspect the precise environment that will be used.\n\n> Implementers' Note: this list is extracted via the `vcpkg_get_tags` mechanism.\n\n### VCPKG_ENV_PASSTHROUGH_UNTRACKED\nInstructs vcpkg to allow additional environment variables into the build process without abi tracking.\n\nSee `VCPKG_ENV_PASSTHROUGH`.\n\n\n### VCPKG_VISUAL_STUDIO_PATH\nSpecifies the Visual Studio installation to use.\n\nTo select the precise combination of Visual Studio instance and toolset version, we walk through the following algorithm:\n1. Determine the setting for `VCPKG_VISUAL_STUDIO_PATH` from the triplet, or the environment variable `VCPKG_VISUAL_STUDIO_PATH`, or consider it unset\n2. Determine the setting for `VCPKG_PLATFORM_TOOLSET` from the triplet or consider it unset\n3. Gather a list of all pairs of Visual Studio Instances with all toolsets available in those instances\n 1. This is ordered first by instance type (Stable, Prerelease, Legacy) and then by toolset version (v142, v141, v140)\n4. Filter the list based on the settings for `VCPKG_VISUAL_STUDIO_PATH` and `VCPKG_PLATFORM_TOOLSET`.\n5. Select the best remaining option\n\nThe path should be absolute, formatted with backslashes, and have no trailing slash:\n```cmake\nset(VCPKG_VISUAL_STUDIO_PATH \"C:\\\\Program Files (x86)\\\\Microsoft Visual Studio\\\\Preview\\\\Community\")\n```\n\n### VCPKG_PLATFORM_TOOLSET\nSpecifies the VS-based C/C++ compiler toolchain to use.\n\nSee [`VCPKG_VISUAL_STUDIO_PATH`](#VCPKG_VISUAL_STUDIO_PATH) for the full selection algorithm.\n\nValid settings:\n* The Visual Studio 2019 platform toolset is `v142`.\n* The Visual Studio 2017 platform toolset is `v141`.\n* The Visual Studio 2015 platform toolset is `v140`.\n\n### VCPKG_LOAD_VCVARS_ENV\nIf `VCPKG_CHAINLOAD_TOOLCHAIN_FILE` is used, VCPKG will not setup the Visual Studio environment.\nSetting `VCPKG_LOAD_VCVARS_ENV` to (true|1|on) changes this behavior so that the Visual Studio environment is setup following the same rules as if `VCPKG_CHAINLOAD_TOOLCHAIN_FILE` was not set.\n\n## MacOS Variables\n\n### VCPKG_INSTALL_NAME_DIR\nSets the install name used when building macOS dynamic libraries. Default value is `@rpath`. See the CMake documentation for [CMAKE_INSTALL_NAME_DIR](https://cmake.org/cmake/help/latest/variable/CMAKE_INSTALL_NAME_DIR.html) for more information.\n\n### VCPKG_OSX_DEPLOYMENT_TARGET\nSets the minimum macOS version for compiled binaries. This also changes what versions of the macOS platform SDK that CMake will search for. See the CMake documentation for [CMAKE_OSX_DEPLOYMENT_TARGET](https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html) for more information.\n\n### VCPKG_OSX_SYSROOT\nSet the name or path of the macOS platform SDK that will be used by CMake. See the CMake documentation for [CMAKE_OSX_SYSROOT](https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_SYSROOT.html) for more information.\n\n\n### VCPKG_OSX_ARCHITECTURES\nSet the macOS / iOS target architecture which will be used by CMake. See the CMake documentation for [CMAKE_OSX_ARCHITECTURES](https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_ARCHITECTURES.html) for more information.\n\n## Per-port customization\nThe 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.\n\nExample:\n```cmake\nset(VCPKG_LIBRARY_LINKAGE static)\nif(PORT MATCHES \"qt5-\")\n set(VCPKG_LIBRARY_LINKAGE dynamic)\nendif()\n```\nThis will build all the `qt5-*` libraries as DLLs, but every other library as a static library.\n\nFor an example in a real project, see https://github.com/Intelight/vcpkg/blob/master/triplets/x86-windows-mixed.cmake.\n\n## Additional Remarks\nThe default triplet when running any vcpkg command is `%VCPKG_DEFAULT_TRIPLET%` or a platform-specific choice if that environment variable is undefined.\n\n- Windows: `x86-windows`\n- Linux: `x64-linux`\n- OSX: `x64-osx`\n\nWe 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.\n\n## Android triplets\nSee [android.md](android.md)\n\n## Mingw-w64 triplets\nSee [mingw.md](mingw.md)\n", "Nav": "#" }, { @@ -83,6 +83,18 @@ "Source": "# Versioning\r\n\r\n**The latest version of this documentation is available on [GitHub](https://github.com/Microsoft/vcpkg/tree/master/docs/users/versioning.md).**\r\n\r\nVersioning allows you to deterministically control the precise revisions of dependencies used by\r\nyour project from within your manifest file.\r\n\r\nSee our guide to [getting started with versioning](../examples/versioning.getting-started.md).\r\n\r\n## Contents\r\n\r\n* [Version schemes](#version-schemes)\r\n * [`version`](#version)\r\n * [`version-semver`](#version-semver)\r\n * [`version-date`](#version-date)\r\n * [`version-string`](#version-string)\r\n* [Version constraints](#version-constraints)\r\n* [Version files](#version-files)\r\n\r\n## Version schemes\r\nPorts in vcpkg should attempt to follow the versioning conventions used by the package's authors. For that reason, when declaring a package's version the appropriate scheme should be used.\r\n\r\nEach versioning scheme defines its own rules on what is a valid version string and more importantly the rules for how to sort versions using the same scheme.\r\n\r\nThe versioning schemes understood by vcpkg are:\r\n\r\nManifest property | Versioning scheme\r\n------------------|------------------------------------\r\n`version` | For dot-separated numeric versions\r\n`version-semver` | For SemVer compliant versions\r\n`version-date` | For dates in the format YYYY-MM-DD\r\n`version-string` | For arbitrary strings\r\n\r\nA manifest must contain only one version declaration. \r\n\r\n_NOTE: By design, vcpkg does not compare versions that use different schemes. For example, a package\r\nthat has a `version-string: 7.1.3` cannot be compared with the same package using `version: 7.1.4`, even if the\r\nconversion seems obvious._\r\n\r\n#### `version`\r\nAccepts version strings that follow a relaxed, dot-separated-, semver-like scheme.\r\n\r\nThe version is logically composed of dot-separated (`.`) numeric sections. Each section must contain an integer positive number with no leading zeroes.\r\n\r\nThe regex pattern for this versioning scheme is: `(0|[1-9]\\d*)(\\.(0|[1-9]\\d*))*`\r\n\r\n_Sorting behavior_: When comparing two versions, each section is compared from left to right by their numeric value, until the first difference is found. A version with the smallest set of sections takes precedence over another with a larger set of sections, given that all their preceding sections compare equally.\r\n\r\nExample:\r\n`0` < `0.1` < `0.1.0` < `1` < `1.0.0` < `1.0.1` < `1.1`< `2.0.0`\r\n\r\n#### `version-semver`\r\nAccepts version strings that follow semantic versioning conventions as described in the [semantic versioning specification](https://semver.org/#semantic-versioning-specification-semver).\r\n\r\n_Sorting behavior_: Strings are sorted following the rules described in the semantic versioning specification.\r\n\r\nExample:\r\n`1.0.0-1` < `1.0.0-alpha` < `1.0.0-beta` < `1.0.0` < `1.0.1` < `1.1.0`\r\n\r\n#### `version-date`\r\n\r\nAccepts version strings that can be parsed to a date following the ISO-8601 format `YYYY-MM-DD`. Disambiguation identifiers are allowed in the form of dot-separated-, positive-, integer-numbers with no leading zeroes.\r\n\r\nThis is the recommended versioning scheme for \"Live at HEAD\" libraries that don't have established release versions.\r\n\r\nThe regex pattern for this versioning scheme is: `\\d{4}-\\d{2}-\\d{2}(\\.(0|[1-9]\\d*))*`\r\n\r\n_Sorting behavior_: Strings are sorted first by their date part, then by numeric comparison of their disambiguation identifiers. Disambiguation identifiers follow the rules of the relaxed (`version`) scheme.\r\n\r\nExamples:\r\n`2021-01-01` < `2021-01-01.1` < `2021-02-01.1.2` < `2021-02-01.1.3` < `2021-02-01`\r\n\r\n#### `version-string`\r\nFor packages using version strings that do not fit any of the other schemes, it accepts most arbitrary strings. The `#` which is used to denote port versions is disallowed.\r\n\r\n_Sorting behavior_: No sorting is attempted on the version string itself. However, if the strings match exactly, their port versions can be compared and sorted.\r\n\r\nExamples:\r\n* `apple` <> `orange` <> `orange.2` <> `orange2`\r\n* `watermelon#0`< `watermelon#1`\r\n\r\n#### `port-version`\r\nA positive integer value that increases each time a vcpkg-specific change is made to the port.\r\n\r\nThe rules for port versions are:\r\n* Start at 0 for the original version of the port,\r\n* increase by 1 each time a vcpkg-specific change is made to the port that does not increase the version of the package,\r\n* and reset to 0 each time the version of the package is updated.\r\n\r\n_NOTE: Whenever vcpkg output a version it follows the format `#`. For example `1.2.0#2` means version `1.2.0` port version `2`. When the port version is `0` the `#0` suffix is omitted (`1.2.0` implies version `1.2.0` port version `0`)._\r\n\r\n_Sorting behavior_: If two versions compare equally, their port versions are compared by their numeric value, lower port versions take precedence.\r\n\r\nExamples:\r\n* `1.2.0` < `1.2.0#1` < `1.2.0#2` < `1.2.0#10`\r\n* `2021-01-01#20` < `2021-01-01.1`\r\n* `windows#7` < `windows#8`\r\n\r\n## Version constraints\r\n\r\n### `builtin-baseline`\r\nAccepts a Git commit ID. Vcpkg will try to find a baseline file in the given commit ID and use that to set the baseline versions (lower bounds) of all dependencies.\r\n\r\nBaselines provide stability and ease of development for top-level manifest files. They are not considered from ports consumed as a dependency. If a minimum version constraint is required during transitive version resolution, the port should use `version>=`.\r\n\r\nExample:\r\n```json\r\n{\r\n \"name\": \"project\",\r\n \"version\": \"1.0.0\",\r\n \"dependencies\": [\"zlib\", \"fmt\"],\r\n \"builtin-baseline\":\"9fd3bd594f41afb8747e20f6ac9619f26f333cbe\"\r\n}\r\n```\r\n\r\nYou can get the current commit of your vcpkg instance either by adding an empty `\"builtin-baseline\"` field, installing, and examining the error message or by running `git rev-parse HEAD` in the root of the vcpkg instance.\r\n\r\nWhen resolving version constraints for a package, vcpkg will look for a baseline version by looking\r\nat the baseline file in the given commit ID.\r\nIf the given commit ID doesn't have a `versions/baseline.json` file or if the baseline file exists\r\nbut it does not declare a baseline version for the package the invocation will fail.\r\n### `version>=`\r\nExpresses a minimum version requirement, `version>=` declarations put a lower boundary on the versions that can be used to satisfy a dependency.\r\n\r\n**Note: Vcpkg selects the lowest version that matches all constraints, so a less-than constraint is not required.**\r\n\r\nExample:\r\n```json\r\n{\r\n \"name\": \"project\",\r\n \"version-semver\": \"1.0.0\",\r\n \"dependencies\": [\r\n { \"name\": \"zlib\", \"version>=\": \"1.2.11#9\" },\r\n { \"name\": \"fmt\", \"version>=\": \"7.1.3#1\" }\r\n ],\r\n \"builtin-baseline\":\"3426db05b996481ca31e95fff3734cf23e0f51bc\"\r\n}\r\n```\r\n\r\nAs part of a version constraint declaration, a port version can be specified by adding the suffix `#`, in the previous example `1.2.11#9` refers to version `1.2.11` port version `9`.\r\n\r\n### `overrides`\r\nDeclaring an override forces vcpkg to ignore all other version constraints and use the version specified in the override. This is useful for pinning exact versions and for resolving version conflicts.\r\n\r\nOverrides are declared as an array of package version declarations.\r\n\r\nFor an override to take effect, the overridden package must form part of the dependency graph. That means that a dependency must be declared either by the top-level manifest or be part of a transitive dependency.\r\n\r\n```json\r\n{\r\n \"name\": \"project\",\r\n \"version-semver\": \"1.0.0\",\r\n \"dependencies\": [\r\n { \"name\": \"zlib\", \"version>=\": \"1.2.11#9\" },\r\n \"fmt\"\r\n ],\r\n \"builtin-baseline\":\"3426db05b996481ca31e95fff3734cf23e0f51bc\",\r\n \"overrides\": [\r\n { \"name\": \"fmt\", \"version\": \"6.0.0\" }\r\n ]\r\n}\r\n```\r\n\r\n## Version files\r\nVcpkg uses a set of metadata files to power its versioning feature.\r\n\r\nThese files are located in the following locations:\r\n* `${VCPKG_ROOT}/versions/baseline.json`, (this file is common to all ports) and\r\n* `${VCPKG_ROOT}/versions/${first-letter-of-portname}-/${portname}.json` (one per port).\r\n\r\nFor example, for `zlib` the relevant files are:\r\n* `${VCPKG_ROOT}/versions/baseline.json`\r\n* `${VCPKG_ROOT}/versions/z-/zlib.json`\r\n\r\nThe vcpkg public CI checks validate that each time a port is added or updated its respective version files are also updated.\r\n\r\n### Baseline file\r\nThe baseline file located in `${VCPKG_ROOT}/versions/baseline.json` is used to declared the current baseline versions of all packages.\r\n\r\nFor example:\r\n```json\r\n{\r\n \"default\": {\r\n \"3fd\": { \"baseline\": \"2.6.3\", \"port-version\": 0 },\r\n \"7zip\": { \"baseline\": \"19.00\", \"port-version\": 2 },\r\n \"abseil\": { \"baseline\": \"2020-09-23\", \"port-version\": 1 }\r\n }\r\n}\r\n```\r\n\r\nProvided that there are no local modifications to the ports, the versions of all packages in the baseline file should map to the version of their corresponding portfiles in the `ports/` directory.\r\n\r\n### Versions file\r\nEach port in vcpkg has a corresponding versions file, the location of a port's versions file follows the pattern:\r\n\r\n```sh\r\n${VCPKG_ROOT}/versions/${first-letter-of-portname}-/${portname}.json\r\n```\r\n\r\nFor example, for `zlib` the corresponding versions file is:\r\n\r\n```sh\r\n${VCPKG_ROOT}/versions/z-/zlib.json\r\n```\r\n\r\nThese files contain an array of all the versions available for a given port.\r\nFor example, the contents of `versions/z-/zlib.json` declare the following versions:\r\n```json\r\n{\r\n \"versions\": [\r\n {\r\n \"git-tree\": \"827111046e37c98153d9d82bb6fa4183b6d728e4\",\r\n \"version-string\": \"1.2.11\",\r\n \"port-version\": 9\r\n },\r\n {\r\n \"git-tree\": \"068430e3e24fa228c302c808ba99f8a48d126557\",\r\n \"version-string\": \"1.2.11\",\r\n \"port-version\": 8\r\n },\r\n ...\r\n ]\r\n}\r\n```\r\nEach version declared in this file uses the same syntax used in manifest files, but adds an extra `git-tree` property. The value of `git-tree` is the SHA hash, as calculated by Git, of the directory containing the portfiles for the declared version. You can ask Git for the object SHA via the syntax:\r\n```\r\ngit rev-parse :\r\n```\r\nFor example,\r\n```\r\ngit rev-parse HEAD:ports/zlib\r\n```\r\n\r\n### Updating the version files\r\nThe recommended method to update these files is to run the `x-add-version` command.\r\n\r\nFor example, if you have made changes to `zlib`:\r\n\r\n```\r\nvcpkg x-add-version zlib\r\n```\r\n\r\nIf you're updating multiple ports at the same time, instead you can run:\r\n\r\n```\r\nvcpkg x-add-version --all\r\n```\r\n\r\nTo update the files for all modified ports at once.\r\n\r\n_NOTE: These commands require you to have committed your changes to the ports before running them. The reason is that the Git SHA of the port directory is required in these version files. But don't worry, the `x-add-version` command will warn you if you have local changes that haven't been committed._\r\n\r\n## See Also\r\n\r\n* The [implementation details](versioning.implementation-details.md)\r\n* The [original specification](../specifications/versioning.md)\r\n\r\n", "Nav": "#" }, + { + "Path": "/en/docs/about/faq.html", + "Name": "faq", + "Source": "# Frequently Asked Questions\n\n## Can I contribute a new library?\nYes! Start out by reading our [contribution guidelines](https://github.com/Microsoft/vcpkg/blob/master/CONTRIBUTING.md).\nIf you want to contribute but don't have a particular library in mind then take a look at the list\nof [new port requests](https://github.com/Microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+label%3Acategory%3Anew-port).\n\n## Can Vcpkg create pre-built binary packages? What is the binary format used by Vcpkg?\nYes! See [the `export` command](../users/integration.md#export-command).\n\n## How do I update libraries?\nThe `vcpkg update` command lists all packages which are out-of-sync with your current portfiles. To update a package, follow the instructions in the command.\n\n## How do I get more libraries?\nThe list of libraries is enumerated from the [`ports\\`](https://github.com/Microsoft/vcpkg/blob/master/ports) directory. By design, you can add and remove libraries from this directory as you see fit for yourself or your company -- see our examples on packaging [zipfiles](../examples/packaging-zipfiles.md) and [GitHub repos](../examples/packaging-github-repos.md).\n\nWe recommend cloning directly from [GitHub](https://github.com/microsoft/vcpkg) and using `git pull` to update the list of portfiles. Once you've updated your portfiles, `vcpkg update` will indicate any installed libraries that are now out of date.\n\n## Can I build a private library with this tool?\nYes. Follow [our packaging zlib Example](../examples/packaging-zipfiles.md) for creating a portfile using a fake URL. Then, either pre-seed the `downloads\\` folder with a zip containing your private sources or replace the normal calls to `vcpkg_download_distfile` and `vcpkg_extract_source_archive` with functions that unpack your source code.\n\n## Can I use a prebuilt private library with this tool?\nYes. The `portfile.cmake` for a library is fundamentally a script that places the headers and binaries into the correct arrangement in the `${CURRENT_PACKAGES_DIR}`, so to pull in prebuilt binaries you can write a portfile which directly downloads and arranges the files.\n\nTo see an example of this, look at [`ports\\opengl\\portfile.cmake`](https://github.com/microsoft/vcpkg/blob/master/ports/opengl/portfile.cmake) which simply copies files out of the Windows SDK.\n\n## Which platforms I can target with Vcpkg?\nWe currently target Windows Desktop (x86 and x64) as well as the Universal Windows Platform (x86, x64, and ARM). See `vcpkg help triplet` for the current list.\n\n## Does Vcpkg run on Linux/OSX?\nYes! We continuously test on OSX and Ubuntu 16.04, however we know users have been successful with Arch, Fedora, and FreeBSD. If you have trouble with your favorite Linux distribution, let us know in an issue and we'd be happy to help!\n\n## How do I update vcpkg?\nExecute `git pull` to get the latest sources, then run `bootstrap-vcpkg.bat` (Windows) or `./bootstrap-vcpkg.sh` (Unix) to update vcpkg.\n\n## How do I use different versions of a library on one machine?\nWithin a single instance of Vcpkg (e.g. one set of `installed\\`, `packages\\`, `ports\\` and so forth), you can only have one version of a library installed (otherwise, the headers would conflict with each other!). For those with experience with system-wide package managers, packages in Vcpkg correspond to the `X-dev` or `X-devel` packages.\n\nTo use different versions of a library for different projects, we recommend making separate instances of Vcpkg and using the [per-project integration mechanisms](../users/integration.md). The versions of each library are specified by the files in `ports\\`, so they are easily manipulated using standard `git` commands. This makes it very easy to roll back the entire set of libraries to a consistent set of older versions which all work with each other. If you need to then pin a specific library forward, that is as easy as checking out the appropriate version of `ports\\\\`.\n\nIf your application is very sensitive to the versions of libraries, we recommend checking in the specific set of portfiles you need into your source control along with your project sources and using the `--vcpkg-root` option to redirect the working directory of `vcpkg.exe`.\n\n## How does Vcpkg protect my privacy?\nSee the [Privacy document](privacy.md) for all information regarding privacy.\n\n## Can I use my own CMake toolchain file with Vcpkg's toolchain file?\nYes. If you already have a CMake toolchain file, you will need to include our toolchain file at the end of yours. This should be as simple as an `include(\\scripts\\buildsystems\\vcpkg.cmake)` directive. Alternatively, you could copy the contents of our `scripts\\buildsystems\\vcpkg.cmake` into the end of your existing toolchain file.\n\n## Can I use my own/specific flags for rebuilding libs?\nYes. In the current version, there is not yet a standardized global way to change them, however you can edit individual portfiles and tweak the exact build process however you'd like.\n\nBy saving the changes to the portfile (and checking them in), you'll get the same results even if you're rebuilding from scratch in the future and forgot what exact settings you used.\n\n## Can I get Vcpkg integration for custom configurations?\n\nYes. While Vcpkg will only produce the standard \"Release\" and \"Debug\" configurations when building a library, you can get integration support for your projects' custom configurations, in addition to your project's standard configurations.\n\nFirst of all, Vcpkg will automatically assume any custom configuration starting with \"Release\" (resp. \"Debug\") as a configuration that is compatible with the standard \"Release\" (resp. \"Debug\") configuration and will act accordingly.\n\nFor other configurations, you only need to override the MSBuild `$(VcpkgConfiguration)` macro in your project file (.vcxproj) to declare the compatibility between your configuration, and the target standard configuration. Unfortunately, due to the sequential nature of MSBuild, you'll need to add those settings much higher in your vcxproj so that it is declared before the Vcpk integration is loaded. It is recommend that the `$(VcpkgConfiguration)` macro is added to the \"Globals\" PropertyGroup.\n\nFor example, you can add support for your \"MyRelease\" configuration by adding in your project file:\n```\n\n ...\n Release\n\n```\nOf course, this will only produce viable binaries if your custom configuration is compatible with the target configuration (e.g. they should both link with the same runtime library).\n\n## I can't use user-wide integration. Can I use a per-project integration?\n\nYes. A NuGet package suitable for per-project use can be generated via either the `vcpkg integrate project` command (lightweight linking) or the `vcpkg export --nuget` command (shrinkwrapped).\n\nA lower level mechanism to achieve the same as the `vcpkg integrate project` NuGet package is via the `\\scripts\\buildsystems\\msbuild\\vcpkg.targets` file. All you need is to import it in your .vcxproj file, replacing `` with the path where you installed vcpkg:\n\n```\n\\scripts\\buildsystems\\msbuild\\vcpkg.targets\" />\n```\n\n## How can I remove temporary files?\n\nYou can save some disk space by completely removing the `packages\\`, `buildtrees\\`, and `downloads\\` folders.\n\n## How is CMake used internally by Vcpkg?\nVcpkg uses CMake internally as a build scripting language. This is because CMake is already an extremely common build system for cross-platform open source libraries and is becoming very popular for C++ projects in general. It is easy to acquire on Windows, does not require system-wide installation, and legible for unfamiliar users.\n\n## Will Vcpkg support downloading compiled binaries from a public or private server?\nWe would like to eventually support downloading precompiled binaries, similar to other system package managers.\n\nIn a corporate scenario, we currently recommend building the libraries once and distributing the entire vcpkg root directory to everyone else on the project through some raw file transport such as a network share or HTTP host. See the [`export`](../users/integration.md#export) command.\n\n## What Visual C++ toolsets are supported?\nWe support Visual Studio 2015 Update 3 and above.\n\n## Why does Visual Studio not use my libraries with user-wide integration enabled?\nEnabling user-wide integration (`vcpkg integrate install`) changes the default for some project properties. In particular, \"C/C++/General/Additional Include Directories\" and \"Linker/General/Additional Library Directories\" are normally blank *without* user-wide integration. *With* integration, a blank value means that the augmented default supplied by vcpkg is overridden, and headers/libraries will not be found. To reinstate the default, set the properties to inherit from parent.\n\n## Why not NuGet?\nNuGet is a package manager for .NET libraries with a strong dependency on MSBuild. It does not meet the specific needs of Native C++ customers in at least three ways.\n\n- **Compilation Flavors**. With so many possible combinations of compilation options, the task of providing a truly complete set of options is intrinsically impossible. Furthermore, the download size for reasonably complete binary packages becomes enormous. This makes it a requirement to split the results into multiple packages, but then searching becomes very difficult.\n\n- **Binary vs Source**. Very closely tied to the first point, NuGet is designed from the ground up to provide relatively small, prebuilt binaries. Due to the nature of native code, developers need to have access to the source code to ensure ABI compatibility, performance, integrity, and debuggability.\n\n- **Per-dll vs Per-application**. NuGet is highly project centric. This works well in managed languages with naturally stable ABIs, because base libraries can continue to evolve without breaking those higher up. However, in native languages where the ABI is much more fragile, the only robust strategy is to explicitly build each library against the exact dependencies that will be included in the final application. This is difficult to ensure in NuGet and leads to a highly disconnected and independently versioned ecosystem.\n\n## Why not Conan?\nConan.io is a publicly-federated, project-centric, cross-platform, C++ package manager written in python. Our primary differences are:\n\n- **Public federation vs private federation**. Conan relies on individuals publishing independent copies of each package. We believe this approach encourages a large number of packages that are all broken in different ways. We believe it is a waste of user's time to pick through the list of 20+ public packages for Boost 1.56 to determine the handful that will work for their particular situation. In contrast, we believe there should be a single, collaboratively maintained version which works for the vast majority of cases and allow users to hack freely on their private versions. We believe this will result in a set of high quality packages that are heavily tested with each other and form a fantastic base for any private modifications you need.\n\n- **Per-dll vs Per-application**. When dependencies are independently versioned on a library level, it encourages every build environment to be a completely unique, unable to take advantage of or contribute to a solid, well tested ecosystem. In contrast, by versioning all libraries together as a platform (similar to a system package manager), we hope to congregate testing and effort on very common sets of library versions to maximize the quality and stability of the ecosystem. This also completely designs out the ability for a library to ask for versions that conflict with the application's choices (I want openssl Z and boost X but X only claims to work with openssl Y).\n\n- **Cross-platform vs single-platform**. While being hosted on many platforms is an excellent north star, we believe the level of system integration and stability provided by apt-get, yum, and homebrew is well worth needing to exchange `apt-get install libboost-all-dev` with `brew install boost` in automated scripts. We chose to make our system as easy as possible to integrate into a world with these very successful system managers -- one more line for `vcpkg install boost` -- instead of attempting to replace them where they are already so successful and well-loved.\n\n- **C++/CMake vs python**. While Python is an excellent language loved by many, we believe that transparency and familiarity are the most important factors when choosing a tool as important to your workflow as a package manager. Consequently, we chose to make the implementation languages be as universally accepted as possible: C++ should be used in a C++ package manager for C++ programmers. You should not be required to learn another programming language just to understand your package manager.\n\n## Why not Chocolatey?\nChocolatey is an excellent system for managing applications. However, it is not currently designed to acquire redistributable developer assets and help you with debugging. Vcpkg, in comparison, is designed to get you the libraries you need to build your application and help you deliver through any platform you'd like (including Chocolatey!).\n", + "Nav": "#" + }, + { + "Path": "/en/docs/about/privacy.html", + "Name": "privacy", + "Source": "# Vcpkg Telemetry and Privacy\n\nvcpkg collects telemetry data to understand usage issues, such as failing packages, and to guide tool improvements. The collected data is anonymous.\nFor more information about how Microsoft protects your privacy, see https://privacy.microsoft.com/en-US/privacystatement#mainenterprisedeveloperproductsmodule\n\n## Scope\n\nWe explicitly ONLY collect information from invocations of the tool itself; we do NOT add any tracking information into the produced libraries. Telemetry is collected when using any of the `vcpkg` commands.\n\n## How to opt out\n\nThe vcpkg telemetry feature is enabled by default. In order to opt-out of data collection, you can re-run the bootstrap script with the following flag, for Windows and Linux/OSX, respectively:\n\n```PS> .\\bootstrap-vcpkg.bat -disableMetrics```\n\n```~/$ ./bootstrap-vcpkg.sh -disableMetrics```\n\n## Disclosure\n\nvcpkg displays text similar to the following when you build vcpkg. This is how Microsoft notifies you about data collection.\n\n```\nTelemetry\n---------\nvcpkg collects usage data in order to help us improve your experience.\nThe data collected by Microsoft is anonymous.\nYou can opt-out of telemetry by re-running the bootstrap-vcpkg script with -disableMetrics,\npassing --disable-metrics to vcpkg on the command line,\nor by setting the VCPKG_DISABLE_METRICS environment variable.\n\nRead more about vcpkg telemetry at docs/about/privacy.md\n```\n\n## Data Collected\n\nThe telemetry feature doesn't collect personal data, such as usernames or email addresses. It doesn't scan your code and doesn't extract project-level data, such as name, repository, or author. The data is sent securely to Microsoft servers and held under restricted access.\n\nProtecting your privacy is important to us. If you suspect the telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the Microsoft/vcpkg repository or send an email to vcpkg@microsoft.com for investigation.\n\nWe collect various telemetry events such as the command line used, the time of invocation, and how long execution took. Some commands also add additional calculated information (such as the full set of libraries to install). We generate a completely random UUID on first use and attach it to each event.\n\nYou can see the telemetry events any command by appending `--printmetrics` after the vcpkg command line.\n\nIn the source code (included at https://github.com/microsoft/vcpkg-tool/ ), you can search for calls to the functions `track_property()`, `track_feature()`, `track_metric()`, and `track_buildtime()`\nto see every specific data point we collect.\n\n## Avoid inadvertent disclosure information\n\nvcpkg contributors and anyone else running a version of vcpkg that they built themselves should consider the path to their source code. If a crash occurs when using vcpkg, the file path from the build machine is collected as part of the stack trace and isn't hashed.\nBecause of this, builds of vcpkg shouldn't be located in directories whose path names expose personal or sensitive information.\n", + "Nav": "#" + }, { "Path": "/en/docs/examples/installing-and-using-packages.html", "Name": "Installing And Using Packages", @@ -116,7 +128,7 @@ { "Path": "/en/docs/examples/packaging-zipfiles.html", "Name": "Packaging Zipfiles", - "Source": "## Packaging Zipfiles Example: zlib\n\n### Bootstrap with `create`\nFirst, locate a globally accessible archive of the library's sources. Zip, gzip, and bzip are all supported. Strongly prefer official sources or mirrors over unofficial mirrors.\n\n*Looking at zlib's website, the URL http://zlib.net/zlib-1.2.11.tar.gz looks appropriate.*\n\nSecond, determine a suitable package name. This should be ASCII, lowercase, and recognizable to someone who knows the library's \"human name\". If the library is already packaged in another package manager, prefer that name.\n\n*Since zlib is already packaged as zlib, we will use the name zlib2 for this example.*\n\nFinally, if the server's name for the archive is not very descriptive (such as downloading a zipped commit or branch from GitHub), choose a nice archive name of the form `-.zip`.\n\n*`zlib1211.zip` is a fine name, so no change needed.*\n\nAll this information can then be passed into the `create` command, which will download the sources and bootstrap the packaging process inside `ports/`.\n\n```no-highlight\nPS D:\\src\\vcpkg> .\\vcpkg create zlib2 http://zlib.net/zlib-1.2.11.tar.gz zlib1211.tar.gz\n-- Generated portfile: D:/src/vcpkg/ports/zlib2/portfile.cmake\n```\n\n### Create the manifest file\nIn addition to the generated `ports//portfile.cmake`, we also need a `ports//vcpkg.json` file. This file is a simple set of fields describing the package's metadata.\n\n*For zlib2, we'll create the file `ports/zlib2/vcpkg.json` with the following contents:*\n```json\n{\n \"name\": \"zlib2\",\n \"version-string\": \"1.2.11\",\n \"description\": \"A Massively Spiffy Yet Delicately Unobtrusive Compression Library\"\n}\n```\n\n### Tweak the generated portfile\nThe generated `portfile.cmake` will need some editing to correctly package most libraries in the wild, however we can start by trying out the build.\n\n```no-highlight\nPS D:\\src\\vcpkg> .\\vcpkg install zlib2\nComputing installation plan...\nThe following packages will be built and installed:\n zlib2[core]:x64-uwp\nStarting package 1/1: zlib2:x64-uwp\nBuilding package zlib2[core]:x64-uwp...\n-- Using cached C:/src/vcpkg/downloads/zlib1211.tar.gz\n-- Cleaning sources at C:/src/vcpkg/buildtrees/zlib2/src/1.2.11-deec42f53b.clean. Pass --editable to vcpkg to reuse sources.\n-- Extracting source C:/src/vcpkg/downloads/zlib1211.tar.gz\n-- Applying patch cmake_dont_build_more_than_needed.patch\n-- Using source at C:/src/vcpkg/buildtrees/zlib2/src/1.2.11-deec42f53b.clean\n-- Configuring x64-uwp\n-- Building x64-uwp-dbg\n-- Building x64-uwp-rel\n-- Installing: C:/src/vcpkg/packages/zlib2_x64-uwp/share/zlib2/copyright\n-- Performing post-build validation\nInclude files should not be duplicated into the /debug/include directory. If this cannot be disabled in the project cmake, use\n file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)\n/debug/share should not exist. Please reorganize any important files, then use\n file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)\nThe software license must be available at ${CURRENT_PACKAGES_DIR}/share/zlib2/copyright\nFound 3 error(s). Please correct the portfile:\n D:\\src\\vcpkg\\ports\\zlib2\\portfile.cmake\n```\n\nAt this point, it is a matter of reading the error messages and log files while steadily improving the quality of the portfile. Zlib required providing a discrete copy of the LICENSE to copy into the package, suppressing the build and installation of executables and headers, and removing the static libraries after they were installed.\n\n### Suggested example portfiles\nIn the `ports/` directory are many libraries that can be used as examples, including many that are not based on CMake.\n\n- Header only libraries\n - rapidjson\n - range-v3\n- MSBuild-based\n - mpg123\n- Non-CMake, custom buildsystem\n - openssl\n - ffmpeg\n", + "Source": "## Packaging `.zip` Files Example: zlib\n\n### Bootstrap with `create`\nFirst, locate a globally accessible archive of the library's sources. Zip, gzip, and bzip are all supported. Strongly prefer official sources or mirrors over unofficial mirrors.\n\n*Looking at zlib's website, the URL http://zlib.net/zlib-1.2.11.tar.gz looks appropriate.*\n\nSecond, determine a suitable package name. This should be ASCII, lowercase, and recognizable to someone who knows the library's \"human name\". If the library is already packaged in another package manager, prefer that name.\n\n*Since zlib is already packaged as zlib, we will use the name zlib2 for this example.*\n\nFinally, if the server's name for the archive is not very descriptive (such as downloading a zipped commit or branch from GitHub), choose a nice archive name of the form `-.zip`.\n\n*`zlib1211.zip` is a fine name, so no change needed.*\n\nAll this information can then be passed into the `create` command, which will download the sources and bootstrap the packaging process inside `ports/`.\n\n```no-highlight\nPS D:\\src\\vcpkg> .\\vcpkg create zlib2 http://zlib.net/zlib-1.2.11.tar.gz zlib1211.tar.gz\n-- Generated portfile: D:/src/vcpkg/ports/zlib2/portfile.cmake\n```\n\n### Create the manifest file\nIn addition to the generated `ports//portfile.cmake`, we also need a `ports//vcpkg.json` file. This file is a simple set of fields describing the package's metadata.\n\n*For zlib2, we'll create the file `ports/zlib2/vcpkg.json` with the following contents:*\n```json\n{\n \"name\": \"zlib2\",\n \"version-string\": \"1.2.11\",\n \"description\": \"A Massively Spiffy Yet Delicately Unobtrusive Compression Library\"\n}\n```\n\n### Tweak the generated portfile\nThe generated `portfile.cmake` will need some editing to correctly package most libraries in the wild, however we can start by trying out the build.\n\n```no-highlight\nPS D:\\src\\vcpkg> .\\vcpkg install zlib2\nComputing installation plan...\nThe following packages will be built and installed:\n zlib2[core]:x64-uwp\nStarting package 1/1: zlib2:x64-uwp\nBuilding package zlib2[core]:x64-uwp...\n-- Using cached C:/src/vcpkg/downloads/zlib1211.tar.gz\n-- Cleaning sources at C:/src/vcpkg/buildtrees/zlib2/src/1.2.11-deec42f53b.clean. Pass --editable to vcpkg to reuse sources.\n-- Extracting source C:/src/vcpkg/downloads/zlib1211.tar.gz\n-- Applying patch cmake_dont_build_more_than_needed.patch\n-- Using source at C:/src/vcpkg/buildtrees/zlib2/src/1.2.11-deec42f53b.clean\n-- Configuring x64-uwp\n-- Building x64-uwp-dbg\n-- Building x64-uwp-rel\n-- Installing: C:/src/vcpkg/packages/zlib2_x64-uwp/share/zlib2/copyright\n-- Performing post-build validation\nInclude files should not be duplicated into the /debug/include directory. If this cannot be disabled in the project cmake, use\n file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)\n/debug/share should not exist. Please reorganize any important files, then use\n file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)\nThe software license must be available at ${CURRENT_PACKAGES_DIR}/share/zlib2/copyright\nFound 3 error(s). Please correct the portfile:\n D:\\src\\vcpkg\\ports\\zlib2\\portfile.cmake\n```\n\nAt this point, it is a matter of reading the error messages and log files while steadily improving the quality of the portfile. Zlib required providing a discrete copy of the LICENSE to copy into the package, suppressing the build and installation of executables and headers, and removing the static libraries after they were installed.\n\n### Suggested example portfiles\nIn the `ports/` directory are many libraries that can be used as examples, including many that are not based on CMake.\n\n- Header only libraries\n - rapidjson\n - range-v3\n- MSBuild-based\n - mpg123\n- Non-CMake, custom buildsystem\n - openssl\n - ffmpeg\n", "Nav": "#" }, { @@ -131,18 +143,6 @@ "Source": "# Getting started with versioning\r\n\r\n**The latest version of this documentation is available on [GitHub](https://github.com/Microsoft/vcpkg/tree/master/docs/examples/versioning.getting-started.md).**\r\n\r\nVcpkg lets you take control of which version of packages to install in your projects using manifests. \r\n\r\n## Using versions with manifests\r\n\r\nWith the `versions` feature flag enabled you can start adding version constraints to your dependencies.\r\n\r\nLet's start with creating a simple CMake project that depends on `fmt` and `zlib`.\r\n\r\nCreate a folder with the following files:\r\n\r\n**vcpkg.json**\r\n```json\r\n{\r\n \"name\": \"versions-test\",\r\n \"version\": \"1.0.0\",\r\n \"dependencies\": [\r\n {\r\n \"name\": \"fmt\",\r\n \"version>=\": \"7.1.3#1\"\r\n }, \r\n \"zlib\"\r\n ],\r\n \"builtin-baseline\": \"3426db05b996481ca31e95fff3734cf23e0f51bc\"\r\n}\r\n```\r\n\r\n**main.cpp**\r\n```c++\r\n#include \r\n#include \r\n\r\nint main()\r\n{\r\n fmt::print(\"fmt version is {}\\n\"\r\n \"zlib version is {}\\n\", \r\n FMT_VERSION, ZLIB_VERSION);\r\n return 0;\r\n}\r\n```\r\n\r\n**CMakeLists.txt**\r\n```CMake\r\ncmake_minimum_required(VERSION 3.18)\r\n\r\nproject(versionstest CXX)\r\n\r\nadd_executable(main main.cpp)\r\n\r\nfind_package(ZLIB REQUIRED)\r\nfind_package(fmt CONFIG REQUIRED)\r\ntarget_link_libraries(main PRIVATE ZLIB::ZLIB fmt::fmt)\r\n```\r\n\r\nAnd now we build and run our project with CMake:\r\n\r\n1. Create the build directory for the project.\r\n```\r\nPS D:\\versions-test> mkdir build\r\nPS D:\\versions-test> cd build\r\n```\r\n\r\n2. Configure CMake. \r\n```\r\nPS D:\\versions-test\\build> cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake ..\r\n-- Running vcpkg install\r\nDetecting compiler hash for triplet x86-windows...\r\nThe following packages will be built and installed:\r\n fmt[core]:x64-windows -> 7.1.3#1 -- D:\\Work\\viromer\\vcpkg\\buildtrees\\versioning\\versions\\fmt\\4f8427eb0bd40da1856d4e67bde39a4fda689d72\r\n vcpkg-cmake[core]:x64-windows -> 2021-02-26 -- D:\\Work\\viromer\\vcpkg\\buildtrees\\versioning\\versions\\vcpkg-cmake\\51896aa8073adb5c8450daa423d03eedf0dfc61f\r\n vcpkg-cmake-config[core]:x64-windows -> 2021-02-26 -- D:\\Work\\viromer\\vcpkg\\buildtrees\\versioning\\versions\\vcpkg-cmake-config\\d255b3d566a8861dcc99a958240463e678528066\r\n zlib[core]:x64-windows -> 1.2.11#9 -- D:\\Work\\viromer\\vcpkg\\buildtrees\\versioning\\versions\\zlib\\827111046e37c98153d9d82bb6fa4183b6d728e4\r\n...\r\n```\r\n\r\n3. Build the project.\r\n```\r\nPS D:\\versions-test\\build> cmake --build .\r\n[2/2] Linking CXX executable main.exe\r\n```\r\n\r\n4. Run it!\r\n```\r\nPS D:\\versions-test\\build> ./main.exe\r\nfmt version is 70103\r\nzlib version is 1.2.11\r\n```\r\n\r\nTake a look at the output:\r\n\r\n```\r\nfmt[core]:x86-windows -> 7.1.3#1 -- D:\\vcpkg\\buildtrees\\versioning\\versions\\fmt\\4f8427eb0bd40da1856d4e67bde39a4fda689d72\r\n...\r\nzlib[core]:x86-windows -> 1.2.11#9 -- D:\\vcpkg\\buildtrees\\versioning\\versions\\zlib\\827111046e37c98153d9d82bb6fa4183b6d728e4\r\n```\r\n\r\nInstead of using the portfiles in `ports/`, vcpkg is checking out the files for each version in `buildtrees/versioning/versions/`. The files in `ports/` are still used when running vcpkg in classic mode or when the `versions` feature flag is disabled. \r\n\r\n_NOTE: Output from vcpkg while configuring CMake is only available when using CMake version `3.18` or newer. If you're using an older CMake you can check the `vcpkg-manifest-install.log` file in your build directory instead._\r\n\r\nRead our [manifests announcement blog post](https://devblogs.microsoft.com/cppblog/vcpkg-accelerate-your-team-development-environment-with-binary-caching-and-manifests/#using-manifests-with-msbuild-projects) to learn how to use manifests with MSBuild.\r\n\r\n### Manifest changes\r\nIf you have used manifests before you will notice that there are some new JSON properties. Let's review these changes:\r\n\r\n#### **`version`**\r\n```json\r\n{\r\n \"name\": \"versions-test\",\r\n \"version\": \"1.0.0\"\r\n}\r\n```\r\n\r\nThis is your project's version declaration. Previously, you could only declare versions for your projects using the `version-string` property. Now that versioning has come around, vcpkg is aware of some new versioning schemes.\r\n\r\nVersion scheme | Description\r\n---------------- | ---------------\r\n`version` | Dot-separated numerics: `1.0.0.5`.\r\n`version-semver` | Compliant [semantic versions](https://semver.org): `1.2.0` and `1.2.0-rc`.\r\n`version-date` | Dates in `YYYY-MM-DD` format: `2021-01-01`\r\n`version-string` | Arbitrary strings: `vista`, `candy`.\r\n\r\n#### **`version>=`** \r\n```json\r\n{\r\n \"dependencies\": [\r\n { \"name\": \"fmt\", \"version>=\": \"7.1.3\" },\r\n \"zlib\"\r\n ]\r\n}\r\n```\r\n\r\nThis property is used to express minimum version constraints, it is allowed only as part of the `\"dependencies\"` declarations. In our example we set an explicit constraint on version `7.1.3#1` of `fmt`. \r\n\r\nVcpkg is allowed to upgrade this constraint if a transitive dependency requires a newer version. For example, if `zlib` were to declare a dependency on `fmt` version `7.1.4` then vcpkg would install `7.1.4` instead.\r\n\r\nVcpkg uses a minimum version approach, in our example, even if `fmt` version `8.0.0` were to be released, vcpkg would still install version `7.1.3#1` as that is the minimum version that satisfies the constraint. The advantages of this approach are that you don't get unexpected dependency upgrades when you update vcpkg and you get reproducible builds (in terms of version used) as long as you use the same manifest. \r\n\r\nIf you want to upgrade your dependencies, you can bump the minimum version constraint or use a newer baseline.\r\n\r\n#### **`builtin-baseline`**\r\n\r\n```json\r\n{ \"builtin-baseline\": \"3426db05b996481ca31e95fff3734cf23e0f51bc\" }\r\n```\r\n\r\nThis field declares the versioning baseline for all ports. Setting a baseline is required to enable versioning, otherwise you will get the current versions on the ports directory. You can run 'git rev-parse HEAD' to get the current commit of vcpkg and set it as the builtin-baseline. See the [`builtin-baseline` documentation](../users/versioning.md#builtin-baseline) for more information.\r\n\r\nIn our example, you can notice that we do not declare a version constraint for `zlib`; instead, the version is taken from the baseline. Internally, vcpkg will look in commit `3426db05b996481ca31e95fff3734cf23e0f51bc` to find out what version of `zlib` was the latest at that point in time (in our case it was `1.2.11#9`).\r\n\r\nDuring version resolution, baseline versions are treated as minimum version constraints. If you declare an explicit constraint that is lower than a baseline version, the explicit constraint will be upgraded to the baseline version. \r\n\r\nFor example, if we modified our dependencies like this:\r\n```json\r\n{ \"dependencies\": [\r\n {\r\n \"name\": \"fmt\",\r\n \"version>=\": \"7.1.3#1\"\r\n },\r\n {\r\n \"name\": \"zlib\",\r\n \"version>=\": \"1.2.11#7\"\r\n }\r\n] }\r\n```\r\n\r\n_NOTE: The value `1.2.11#7` represents version `1.2.11`, port version `7`._\r\n\r\nSince the baseline introduces a minimum version constraint for `zlib` at `1.2.11#9` and a higher version does satisfy the minimum version constraint for `1.2.11#7`, vcpkg is allowed to upgrade it. \r\n\r\nBaselines are also a convenient mechanism to upgrade multiple versions at a time, for example, if you wanted to depend on multiple `boost` libraries, it is more convenient to set the `baseline` once than declaring a version constraint on each package.\r\n\r\nBut what if you want to pin a version older than the baseline? \r\n\r\n#### **`overrides`**\r\n\r\nSince baselines establish a version floor for all packages and explicit constraints get upgraded when they are lower than the baseline, we need another mechanism to downgrade versions past the baseline.\r\n\r\nThe mechanism vcpkg provides for that scenario is `overrides`. When an override is declared on a package, vcpkg will ignore all other version constraints either directly declared in the manifest or from transitive dependencies. In short, `overrides` will force vcpkg to use the exact version declared, period.\r\n\r\nLet's modify our example once more, this time to force vcpkg to use version `6.0.0` of `fmt`.\r\n\r\n```json\r\n{\r\n \"name\": \"versions-test\",\r\n \"version\": \"1.0.0\",\r\n \"dependencies\": [\r\n {\r\n \"name\": \"fmt\",\r\n \"version>=\": \"7.1.3#1\"\r\n },\r\n {\r\n \"name\": \"zlib\",\r\n \"version>=\": \"1.2.11#7\"\r\n }\r\n ],\r\n \"builtin-baseline\": \"3426db05b996481ca31e95fff3734cf23e0f51bc\",\r\n \"overrides\": [\r\n {\r\n \"name\": \"fmt\",\r\n \"version\": \"6.0.0\"\r\n }\r\n ]\r\n}\r\n```\r\n\r\nRebuild our project:\r\n\r\n```\r\nPS D:\\versions-test\\build> rm ./CMakeCache.txt\r\nPS D:\\versions-test\\build> rm -r ./vcpkg_installed\r\nPS D:\\versions-test\\build> cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=D:/vcpkg/scripts/buildsystems/vcpkg.cmake ..\r\n-- Running vcpkg install\r\nDetecting compiler hash for triplet x86-windows...\r\nThe following packages will be built and installed:\r\n fmt[core]:x86-windows -> 6.0.0 -- D:\\vcpkg\\buildtrees\\versioning\\versions\\fmt\\d99b6a35e1406ba6b6e09d719bebd086f83ed5f3\r\n zlib[core]:x86-windows -> 1.2.11#9 -- D:\\vcpkg\\buildtrees\\versioning\\versions\\zlib\\827111046e37c98153d9d82bb6fa4183b6d728e4\r\n...\r\nPS D:\\versions-test\\build> cmake --build .\r\n[2/2] Linking CXX executable main.exe\r\n```\r\n\r\nAnd run it!\r\n```\r\nPS D:\\versions-test\\build> .\\main.exe\r\nfmt version is 60000\r\nzlib version is 1.2.11\r\n```\r\n\r\nNotice how the `fmt` is now at version `6.0.0` just like we wanted.\r\n\r\n## Versions and custom ports\r\n\r\nThe last thing to discuss is how overlay ports interact with versioning resolution. The answer is: they don't. \r\n\r\nGoing into more detail, when you provide an overlay for a port, vcpkg will always use the overlay port without caring what version is contained in it. The reasons are two-fold: (1) it is consistent with the existing behavior of overlay ports of completely masking the existing port, and (2) overlay ports do not (and are not expected to) provide enough information to power vcpkg's versioning feature.\r\n\r\nIf you want to have flexible port customization along with versioning features, you should consider making your own custom registry. See our [registries specification for more details](../specifications/registries.md).\r\n\r\n## Further reading\r\n\r\nIf you're interested in delving deeper into the details of how versioning works we recommended that you read the [original versioning specification](../specifications/versioning.md) and the [implementation details](../users/versioning.implementation-details.md).\r\n\r\nSee also:\r\n\r\n* [Versioning docs](../users/versioning.md)\r\n* [Original specification](../specifications/versioning.md)\r\n* [Versioning implementation details](../users/versioning.implementation-details.md)\r\n", "Nav": "#" }, - { - "Path": "/en/docs/about/faq.html", - "Name": "faq", - "Source": "# Frequently Asked Questions\n\n## Can I contribute a new library?\nYes! Start out by reading our [contribution guidelines](https://github.com/Microsoft/vcpkg/blob/master/CONTRIBUTING.md).\nIf you want to contribute but don't have a particular library in mind then take a look at the list\nof [new port requests](https://github.com/Microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+label%3Acategory%3Anew-port).\n\n## Can Vcpkg create pre-built binary packages? What is the binary format used by Vcpkg?\nYes! See [the `export` command](../users/integration.md#export-command).\n\n## How do I update libraries?\nThe `vcpkg update` command lists all packages which are out-of-sync with your current portfiles. To update a package, follow the instructions in the command.\n\n## How do I get more libraries?\nThe list of libraries is enumerated from the [`ports\\`](https://github.com/Microsoft/vcpkg/blob/master/ports) directory. By design, you can add and remove libraries from this directory as you see fit for yourself or your company -- see our examples on packaging [zipfiles](../examples/packaging-zipfiles.md) and [GitHub repos](../examples/packaging-github-repos.md).\n\nWe recommend cloning directly from [GitHub](https://github.com/microsoft/vcpkg) and using `git pull` to update the list of portfiles. Once you've updated your portfiles, `vcpkg update` will indicate any installed libraries that are now out of date.\n\n## Can I build a private library with this tool?\nYes. Follow [our packaging zlib Example](../examples/packaging-zipfiles.md) for creating a portfile using a fake URL. Then, either pre-seed the `downloads\\` folder with a zip containing your private sources or replace the normal calls to `vcpkg_download_distfile` and `vcpkg_extract_source_archive` with functions that unpack your source code.\n\n## Can I use a prebuilt private library with this tool?\nYes. The `portfile.cmake` for a library is fundamentally a script that places the headers and binaries into the correct arrangement in the `${CURRENT_PACKAGES_DIR}`, so to pull in prebuilt binaries you can write a portfile which directly downloads and arranges the files.\n\nTo see an example of this, look at [`ports\\opengl\\portfile.cmake`](https://github.com/microsoft/vcpkg/blob/master/ports/opengl/portfile.cmake) which simply copies files out of the Windows SDK.\n\n## Which platforms I can target with Vcpkg?\nWe currently target Windows Desktop (x86 and x64) as well as the Universal Windows Platform (x86, x64, and ARM). See `vcpkg help triplet` for the current list.\n\n## Does Vcpkg run on Linux/OSX?\nYes! We continuously test on OSX and Ubuntu 16.04, however we know users have been successful with Arch, Fedora, and FreeBSD. If you have trouble with your favorite Linux distribution, let us know in an issue and we'd be happy to help!\n\n## How do I update vcpkg?\nExecute `git pull` to get the latest sources, then run `bootstrap-vcpkg.bat` (Windows) or `./bootstrap-vcpkg.sh` (Unix) to update vcpkg.\n\n## How do I use different versions of a library on one machine?\nWithin a single instance of Vcpkg (e.g. one set of `installed\\`, `packages\\`, `ports\\` and so forth), you can only have one version of a library installed (otherwise, the headers would conflict with each other!). For those with experience with system-wide package managers, packages in Vcpkg correspond to the `X-dev` or `X-devel` packages.\n\nTo use different versions of a library for different projects, we recommend making separate instances of Vcpkg and using the [per-project integration mechanisms](../users/integration.md). The versions of each library are specified by the files in `ports\\`, so they are easily manipulated using standard `git` commands. This makes it very easy to roll back the entire set of libraries to a consistent set of older versions which all work with each other. If you need to then pin a specific library forward, that is as easy as checking out the appropriate version of `ports\\\\`.\n\nIf your application is very sensitive to the versions of libraries, we recommend checking in the specific set of portfiles you need into your source control along with your project sources and using the `--vcpkg-root` option to redirect the working directory of `vcpkg.exe`.\n\n## How does Vcpkg protect my privacy?\nSee the [Privacy document](privacy.md) for all information regarding privacy.\n\n## Can I use my own CMake toolchain file with Vcpkg's toolchain file?\nYes. If you already have a CMake toolchain file, you will need to include our toolchain file at the end of yours. This should be as simple as an `include(\\scripts\\buildsystems\\vcpkg.cmake)` directive. Alternatively, you could copy the contents of our `scripts\\buildsystems\\vcpkg.cmake` into the end of your existing toolchain file.\n\n## Can I use my own/specific flags for rebuilding libs?\nYes. In the current version, there is not yet a standardized global way to change them, however you can edit individual portfiles and tweak the exact build process however you'd like.\n\nBy saving the changes to the portfile (and checking them in), you'll get the same results even if you're rebuilding from scratch in the future and forgot what exact settings you used.\n\n## Can I get Vcpkg integration for custom configurations?\n\nYes. While Vcpkg will only produce the standard \"Release\" and \"Debug\" configurations when building a library, you can get integration support for your projects' custom configurations, in addition to your project's standard configurations.\n\nFirst of all, Vcpkg will automatically assume any custom configuration starting with \"Release\" (resp. \"Debug\") as a configuration that is compatible with the standard \"Release\" (resp. \"Debug\") configuration and will act accordingly.\n\nFor other configurations, you only need to override the MSBuild `$(VcpkgConfiguration)` macro in your project file (.vcxproj) to declare the compatibility between your configuration, and the target standard configuration. Unfortunately, due to the sequential nature of MSBuild, you'll need to add those settings much higher in your vcxproj so that it is declared before the Vcpk integration is loaded. It is recommend that the `$(VcpkgConfiguration)` macro is added to the \"Globals\" PropertyGroup.\n\nFor example, you can add support for your \"MyRelease\" configuration by adding in your project file:\n```\n\n ...\n Release\n\n```\nOf course, this will only produce viable binaries if your custom configuration is compatible with the target configuration (e.g. they should both link with the same runtime library).\n\n## I can't use user-wide integration. Can I use a per-project integration?\n\nYes. A NuGet package suitable for per-project use can be generated via either the `vcpkg integrate project` command (lightweight linking) or the `vcpkg export --nuget` command (shrinkwrapped).\n\nA lower level mechanism to achieve the same as the `vcpkg integrate project` NuGet package is via the `\\scripts\\buildsystems\\msbuild\\vcpkg.targets` file. All you need is to import it in your .vcxproj file, replacing `` with the path where you installed vcpkg:\n\n```\n\\scripts\\buildsystems\\msbuild\\vcpkg.targets\" />\n```\n\n## How can I remove temporary files?\n\nYou can save some disk space by completely removing the `packages\\`, `buildtrees\\`, and `downloads\\` folders.\n\n## How is CMake used internally by Vcpkg?\nVcpkg uses CMake internally as a build scripting language. This is because CMake is already an extremely common build system for cross-platform open source libraries and is becoming very popular for C++ projects in general. It is easy to acquire on Windows, does not require system-wide installation, and legible for unfamiliar users.\n\n## Will Vcpkg support downloading compiled binaries from a public or private server?\nWe would like to eventually support downloading precompiled binaries, similar to other system package managers.\n\nIn a corporate scenario, we currently recommend building the libraries once and distributing the entire vcpkg root directory to everyone else on the project through some raw file transport such as a network share or HTTP host. See the [`export`](../users/integration.md#export) command.\n\n## What Visual C++ toolsets are supported?\nWe support Visual Studio 2015 Update 3 and above.\n\n## Why does Visual Studio not use my libraries with user-wide integration enabled?\nEnabling user-wide integration (`vcpkg integrate install`) changes the default for some project properties. In particular, \"C/C++/General/Additional Include Directories\" and \"Linker/General/Additional Library Directories\" are normally blank *without* user-wide integration. *With* integration, a blank value means that the augmented default supplied by vcpkg is overridden, and headers/libraries will not be found. To reinstate the default, set the properties to inherit from parent.\n\n## Why not NuGet?\nNuGet is a package manager for .NET libraries with a strong dependency on MSBuild. It does not meet the specific needs of Native C++ customers in at least three ways.\n\n- **Compilation Flavors**. With so many possible combinations of compilation options, the task of providing a truly complete set of options is intrinsically impossible. Furthermore, the download size for reasonably complete binary packages becomes enormous. This makes it a requirement to split the results into multiple packages, but then searching becomes very difficult.\n\n- **Binary vs Source**. Very closely tied to the first point, NuGet is designed from the ground up to provide relatively small, prebuilt binaries. Due to the nature of native code, developers need to have access to the source code to ensure ABI compatibility, performance, integrity, and debuggability.\n\n- **Per-dll vs Per-application**. NuGet is highly project centric. This works well in managed languages with naturally stable ABIs, because base libraries can continue to evolve without breaking those higher up. However, in native languages where the ABI is much more fragile, the only robust strategy is to explicitly build each library against the exact dependencies that will be included in the final application. This is difficult to ensure in NuGet and leads to a highly disconnected and independently versioned ecosystem.\n\n## Why not Conan?\nConan.io is a publicly-federated, project-centric, cross-platform, C++ package manager written in python. Our primary differences are:\n\n- **Public federation vs private federation**. Conan relies on individuals publishing independent copies of each package. We believe this approach encourages a large number of packages that are all broken in different ways. We believe it is a waste of user's time to pick through the list of 20+ public packages for Boost 1.56 to determine the handful that will work for their particular situation. In contrast, we believe there should be a single, collaboratively maintained version which works for the vast majority of cases and allow users to hack freely on their private versions. We believe this will result in a set of high quality packages that are heavily tested with each other and form a fantastic base for any private modifications you need.\n\n- **Per-dll vs Per-application**. When dependencies are independently versioned on a library level, it encourages every build environment to be a completely unique, unable to take advantage of or contribute to a solid, well tested ecosystem. In contrast, by versioning all libraries together as a platform (similar to a system package manager), we hope to congregate testing and effort on very common sets of library versions to maximize the quality and stability of the ecosystem. This also completely designs out the ability for a library to ask for versions that conflict with the application's choices (I want openssl Z and boost X but X only claims to work with openssl Y).\n\n- **Cross-platform vs single-platform**. While being hosted on many platforms is an excellent north star, we believe the level of system integration and stability provided by apt-get, yum, and homebrew is well worth needing to exchange `apt-get install libboost-all-dev` with `brew install boost` in automated scripts. We chose to make our system as easy as possible to integrate into a world with these very successful system managers -- one more line for `vcpkg install boost` -- instead of attempting to replace them where they are already so successful and well-loved.\n\n- **C++/CMake vs python**. While Python is an excellent language loved by many, we believe that transparency and familiarity are the most important factors when choosing a tool as important to your workflow as a package manager. Consequently, we chose to make the implementation languages be as universally accepted as possible: C++ should be used in a C++ package manager for C++ programmers. You should not be required to learn another programming language just to understand your package manager.\n\n## Why not Chocolatey?\nChocolatey is an excellent system for managing applications. However, it is not currently designed to acquire redistributable developer assets and help you with debugging. Vcpkg, in comparison, is designed to get you the libraries you need to build your application and help you deliver through any platform you'd like (including Chocolatey!).\n", - "Nav": "#" - }, - { - "Path": "/en/docs/about/privacy.html", - "Name": "privacy", - "Source": "# Vcpkg telemetry and privacy\n\nvcpkg collects telemetry data to understand usage issues, such as failing packages, and to guide tool improvements. The collected data is anonymous.\nFor more information about how Microsoft protects your privacy, see https://privacy.microsoft.com/en-US/privacystatement#mainenterprisedeveloperproductsmodule\n\n## Scope\n\nWe explicitly ONLY collect information from invocations of the tool itself; we do NOT add any tracking information into the produced libraries. Telemetry is collected when using any of the `vcpkg` commands.\n\n## How to opt out\n\nThe vcpkg telemetry feature is enabled by default. In order to opt-out of data collection, you can re-run the bootstrap script with the following flag, for Windows and Linux/OSX, respectively:\n\n```PS> .\\bootstrap-vcpkg.bat -disableMetrics```\n\n```~/$ ./bootstrap-vcpkg.sh -disableMetrics```\n\n## Disclosure\n\nvcpkg displays text similar to the following when you build vcpkg. This is how Microsoft notifies you about data collection.\n\n```\nTelemetry\n---------\nvcpkg collects usage data in order to help us improve your experience.\nThe data collected by Microsoft is anonymous.\nYou can opt-out of telemetry by re-running the bootstrap-vcpkg script with -disableMetrics,\npassing --disable-metrics to vcpkg on the command line,\nor by setting the VCPKG_DISABLE_METRICS environment variable.\n\nRead more about vcpkg telemetry at docs/about/privacy.md\n```\n\n## Data Collected\n\nThe telemetry feature doesn't collect personal data, such as usernames or email addresses. It doesn't scan your code and doesn't extract project-level data, such as name, repository, or author. The data is sent securely to Microsoft servers and held under restricted access.\n\nProtecting your privacy is important to us. If you suspect the telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the Microsoft/vcpkg repository or send an email to vcpkg@microsoft.com for investigation.\n\nWe collect various telemetry events such as the command line used, the time of invocation, and how long execution took. Some commands also add additional calculated information (such as the full set of libraries to install). We generate a completely random UUID on first use and attach it to each event.\n\nYou can see the telemetry events any command by appending `--printmetrics` after the vcpkg command line.\n\nIn the source code (included at https://github.com/microsoft/vcpkg-tool/ ), you can search for calls to the functions `track_property()`, `track_feature()`, `track_metric()`, and `track_buildtime()`\nto see every specific data point we collect.\n\n## Avoid inadvertent disclosure information\n\nvcpkg contributors and anyone else running a version of vcpkg that they built themselves should consider the path to their source code. If a crash occurs when using vcpkg, the file path from the build machine is collected as part of the stack trace and isn't hashed.\nBecause of this, builds of vcpkg shouldn't be located in directories whose path names expose personal or sensitive information.\n", - "Nav": "#" - }, { "Path": "/en/docs/specifications/binarycaching.html", "Name": "binarycaching", @@ -206,7 +206,7 @@ { "Path": "/en/docs/maintainers/cmake-guidelines.html", "Name": "Cmake Guidelines", - "Source": "# CMake Guidelines\r\n\r\nWe expect that all CMake scripts that are either:\r\n\r\n- In the `scripts/` directory, or\r\n- In a `vcpkg-*` port\r\n\r\nshould follow the guidelines laid out in this document.\r\nExisting scripts may not follow these guidelines yet;\r\nit is expected that we will continue to update old scripts\r\nto fall in line with these guidelines.\r\n\r\nThese guidelines are intended to create stability in our scripts.\r\nWe hope that they will make both forwards and backwards compatibility easier.\r\n\r\n## The Guidelines\r\n\r\n- Except for out-parameters, we always use `cmake_parse_arguments()`\r\n rather than function parameters or referring to `${ARG}`.\r\n - This doesn't necessarily need to be followed for \"script-local helper functions\"\r\n - In this case, positional parameters should be put in the function\r\n declaration (rather than using `${ARG}`),\r\n and should be named according to local rules (i.e. `snake_case`).\r\n - Exception: positional parameters that are optional should be\r\n given a name via `set(argument_name \"${ARG}\")`, after checking `ARGC`.\r\n - Out-parameters should be the first parameter to a function. Example:\r\n ```cmake\r\n function(format out_var)\r\n cmake_parse_arguments(PARSE_ARGV 1 \"arg\" ...)\r\n # ... set(buffer \"output\")\r\n set(\"${out_var}\" \"${buffer}\" PARENT_SCOPE)\r\n endfunction()\r\n ```\r\n- There are no unparsed or unused arguments.\r\n Always check for `ARGN` or `arg_UNPARSED_ARGUMENTS`.\r\n `FATAL_ERROR` when possible, `WARNING` if necessary for backwards compatibility.\r\n- All `cmake_parse_arguments` must use `PARSE_ARGV`.\r\n- All `foreach` loops must use `IN LISTS` and `IN ITEMS`.\r\n- The variables `${ARGV}` and `${ARGN}` are unreferenced,\r\n except in helpful messages to the user.\r\n - (i.e., `message(FATAL_ERROR \"blah was passed extra arguments: ${ARGN}\")`)\r\n- We always use functions, not macros or top level code.\r\n - Exception: \"script-local helper macros\". It is sometimes helpful to define a small macro.\r\n This should be done sparingly, and functions should be preferred.\r\n - Exception: `vcpkg.cmake`'s `find_package`.\r\n- Scripts in the scripts tree should not be expected to need observable changes\r\n as part of normal operation.\r\n - Example violation: `vcpkg_acquire_msys()` has hard-coded packages and versions that need updating over time due to the MSYS project dropping old packages.\r\n - Example exception: `vcpkg_from_sourceforge()` has a list of mirrors which needs maintenance but does not have an observable behavior impact on the callers.\r\n- All variable expansions are in quotes `\"\"`,\r\n except those which are intended to be passed as multiple arguments.\r\n - Example:\r\n ```cmake\r\n set(working_directory \"\")\r\n if(DEFINED arg_WORKING_DIRECTORY)\r\n set(working_directory \"WORKING_DIRECTORY\" \"${arg_WORKING_DIRECTORY}\")\r\n endif()\r\n # calls do_the_thing() if NOT DEFINED arg_WORKING_DIRECTORY,\r\n # else calls do_the_thing(WORKING_DIRECTORY \"${arg_WORKING_DIRECTORY}\")\r\n do_the_thing(${working_directory})\r\n ```\r\n- There are no \"pointer\" or \"in-out\" parameters\r\n (where a user passes a variable name rather than the contents),\r\n except for simple out-parameters.\r\n- Variables are not assumed to be empty.\r\n If the variable is intended to be used locally,\r\n it must be explicitly initialized to empty with `set(foo \"\")`.\r\n- All variables expected to be inherited from the parent scope across an API boundary (i.e. not a file-local function) should be documented. Note that all variables mentioned in triplets.md are considered documented.\r\n- Out parameters are only set in `PARENT_SCOPE` and are never read.\r\n See also the helper `z_vcpkg_forward_output_variable()` to forward out parameters through a function scope.\r\n- `CACHE` variables are used only for global variables which are shared internally among strongly coupled\r\n functions and for internal state within a single function to avoid duplicating work.\r\n These should be used extremely sparingly and should use the `Z_VCPKG_` prefix to avoid\r\n colliding with any local variables that would be defined by any other code.\r\n - Examples:\r\n - `vcpkg_cmake_configure`'s `Z_VCPKG_CMAKE_GENERATOR`\r\n - `z_vcpkg_get_cmake_vars`'s `Z_VCPKG_GET_CMAKE_VARS_FILE`\r\n- `include()`s are only allowed in `ports.cmake` or `vcpkg-port-config.cmake`.\r\n- `foreach(RANGE)`'s arguments _must always be_ natural numbers,\r\n and `` _must always be_ less than or equal to ``.\r\n - This must be checked by something like:\r\n ```cmake\r\n if(start LESS_EQUAL end)\r\n foreach(RANGE start end)\r\n ...\r\n endforeach()\r\n endif()\r\n ```\r\n- All port-based scripts must use `include_guard(GLOBAL)`\r\n to avoid being included multiple times.\r\n- `set(var)` should not be used. Use `unset(var)` to unset a variable,\r\n and `set(var \"\")` to set it to the empty value. _Note: this works for use as a list and as a string_\r\n\r\n### CMake Versions to Require\r\n\r\n- All CMake scripts, except for `vcpkg.cmake`,\r\n may assume the version of CMake that is present in the\r\n `cmake_minimum_required` of `ports.cmake`.\r\n - This `cmake_minimum_required` should be bumped every time a new version\r\n of CMake is added to `vcpkgTools.xml`, as should the\r\n `cmake_minimum_required` in all of the helper `CMakeLists.txt` files.\r\n- `vcpkg.cmake` must assume a version of CMake back to 3.1 in general\r\n - Specific functions and options may assume a greater CMake version;\r\n if they do, make sure to comment that function or option\r\n with the required CMake version.\r\n\r\n\r\n### Changing Existing Functions\r\n\r\n- Never remove arguments in non-internal functions;\r\n if they should no longer do anything, just take them as normal and warn on use.\r\n- Never add a new mandatory argument.\r\n\r\n### Naming Variables\r\n\r\n- `cmake_parse_arguments`: set prefix to `\"arg\"`\r\n- Local variables are named with `snake_case`\r\n- Internal global variable names are prefixed with `Z_VCPKG_`.\r\n- External experimental global variable names are prefixed with `X_VCPKG_`.\r\n\r\n- Internal functions are prefixed with `z_vcpkg_`\r\n - Functions which are internal to a single function (i.e., helper functions)\r\n are named `[z_]_`, where `` is the name of the function they are\r\n a helper to, and `` is what the helper function does.\r\n - `z_` should be added to the front if `` doesn't have a `z_`,\r\n but don't name a helper function `z_z_foo_bar`.\r\n- Public global variables are named `VCPKG_`.\r\n", + "Source": "# CMake Guidelines\r\n\r\nWe expect that all CMake scripts that are either:\r\n\r\n- In the `scripts/` directory, or\r\n- In a `vcpkg-*` port\r\n\r\nshould follow the guidelines laid out in this document.\r\nExisting scripts may not follow these guidelines yet;\r\nit is expected that we will continue to update old scripts\r\nto fall in line with these guidelines.\r\n\r\nThese guidelines are intended to create stability in our scripts.\r\nWe hope that they will make both forwards and backwards compatibility easier.\r\n\r\n## The Guidelines\r\n\r\n- Except for out-parameters, we always use `cmake_parse_arguments()`\r\n rather than function parameters or referring to `${ARG}`.\r\n - This doesn't necessarily need to be followed for \"script-local helper functions\"\r\n - In this case, positional parameters should be put in the function\r\n declaration (rather than using `${ARG}`),\r\n and should be named according to local rules (i.e. `snake_case`).\r\n - Exception: positional parameters that are optional should be\r\n given a name via `set(argument_name \"${ARG}\")`, after checking `ARGC`.\r\n - Out-parameters should be the first parameter to a function. Example:\r\n ```cmake\r\n function(format out_var)\r\n cmake_parse_arguments(PARSE_ARGV 1 \"arg\" ...)\r\n # ... set(buffer \"output\")\r\n set(\"${out_var}\" \"${buffer}\" PARENT_SCOPE)\r\n endfunction()\r\n ```\r\n- There are no unparsed or unused arguments.\r\n Always check for `ARGN` or `arg_UNPARSED_ARGUMENTS`.\r\n `FATAL_ERROR` when possible, `WARNING` if necessary for backwards compatibility.\r\n- All `cmake_parse_arguments` must use `PARSE_ARGV`.\r\n- All `foreach` loops must use `IN LISTS`, `IN ITEMS`, or `RANGE`.\r\n- The variables `${ARGV}` and `${ARGN}` are unreferenced,\r\n except in helpful messages to the user.\r\n - (i.e., `message(FATAL_ERROR \"blah was passed extra arguments: ${ARGN}\")`)\r\n- We always use functions, not macros or top level code.\r\n - Exception: \"script-local helper macros\". It is sometimes helpful to define a small macro.\r\n This should be done sparingly, and functions should be preferred.\r\n - Exception: `vcpkg.cmake`'s `find_package`.\r\n- Scripts in the scripts tree should not be expected to need observable changes\r\n as part of normal operation.\r\n - Example violation: `vcpkg_acquire_msys()` has hard-coded packages and versions\r\n that need updating over time due to the MSYS project dropping old packages.\r\n - Example exception: `vcpkg_from_sourceforge()` has a list of mirrors which\r\n needs maintenance, but does not have an observable behavior impact on the callers.\r\n- Rules for quoting: there are three kinds of arguments in CMake -\r\n unquoted (`foo(BAR)`), quoted (`foo(\"BAR\")`), and bracketed (`foo([[BAR]])`).\r\n Follow these rules to quote correctly:\r\n - If an argument contains a variable expansion `${...}`,\r\n it must be quoted.\r\n - Exception: a \"splat\" variable expansion, when one variable will be\r\n passed to a function as multiple arguments. In this case, the argument\r\n should simply be `${foo}`:\r\n ```cmake\r\n vcpkg_list(SET working_directory)\r\n if(DEFINED \"arg_WORKING_DIRECTORY\")\r\n vcpkg_list(SET working_directory WORKING_DIRECTORY \"${arg_WORKING_DIRECTORY}\")\r\n endif()\r\n # calls do_the_thing() if NOT DEFINED arg_WORKING_DIRECTORY,\r\n # else calls do_the_thing(WORKING_DIRECTORY \"${arg_WORKING_DIRECTORY}\")\r\n do_the_thing(${working_directory})\r\n ```\r\n - Otherwise, if the argument contains any escape sequences that are not\r\n `\\\\`, `\\\"`, or `\\$`, that argument must be a quoted argument.\r\n - For example: `\"foo\\nbar\"` must be quoted.\r\n - Otherwise, if the argument contains a `\\`, a `\"`, or a `$`,\r\n that argument should be bracketed.\r\n - Example:\r\n ```cmake\r\n set(x [[foo\\bar]])\r\n set(y [=[foo([[bar\\baz]])]=])\r\n ```\r\n - Otherwise, if the argument contains characters that are\r\n not alphanumeric or `_`, that argument should be quoted.\r\n - Otherwise, the argument should be unquoted.\r\n - Exception: arguments to `if()` of type `` should always be quoted:\r\n - Both arguments to the comparison operators -\r\n `EQUAL`, `STREQUAL`, `VERSION_LESS`, etc.\r\n - The first argument to `MATCHES` and `IN_LIST`\r\n - Example:\r\n ```cmake\r\n if(\"${FOO}\" STREQUAL \"BAR\") # ...\r\n if(\"${BAZ}\" EQUAL \"0\") # ...\r\n if(\"FOO\" IN_LIST list_variable) # ...\r\n if(\"${bar}\" MATCHES [[a[bcd]+\\.[bcd]+]]) # ...\r\n ```\r\n - For single expressions and for other types of predicates that do not\r\n take ``, use the normal rules.\r\n- There are no \"pointer\" or \"in-out\" parameters\r\n (where a user passes a variable name rather than the contents),\r\n except for simple out-parameters.\r\n- Variables are not assumed to be empty.\r\n If the variable is intended to be used locally,\r\n it must be explicitly initialized to empty with `set(foo \"\")` if it is a string variable,\r\n and `vcpkg_list(SET foo)` if it is a list variable.\r\n- `set(var)` should not be used. Use `unset(var)` to unset a variable,\r\n `set(var \"\")` to set it to the empty string,\r\n and `vcpkg_list(SET var)` to set it to the empty list.\r\n _Note: the empty string and the empty list are the same value;_\r\n _this is a notational difference rather than a difference in result_\r\n- All variables expected to be inherited from the parent scope across an API boundary\r\n (i.e. not a file-local function) should be documented.\r\n Note that all variables mentioned in triplets.md are considered documented.\r\n- Out parameters are only set in `PARENT_SCOPE` and are never read.\r\n See also the helper `z_vcpkg_forward_output_variable()` to forward out parameters through a function scope.\r\n- `CACHE` variables are used only for global variables which are shared internally among strongly coupled\r\n functions and for internal state within a single function to avoid duplicating work.\r\n These should be used extremely sparingly and should use the `Z_VCPKG_` prefix to avoid\r\n colliding with any local variables that would be defined by any other code.\r\n - Examples:\r\n - `vcpkg_cmake_configure`'s `Z_VCPKG_CMAKE_GENERATOR`\r\n - `z_vcpkg_get_cmake_vars`'s `Z_VCPKG_GET_CMAKE_VARS_FILE`\r\n- `include()`s are only allowed in `ports.cmake` or `vcpkg-port-config.cmake`.\r\n- `foreach(RANGE)`'s arguments _must always be_ natural numbers,\r\n and `` _must always be_ less than or equal to ``.\r\n - This must be checked by something like:\r\n ```cmake\r\n if(\"${start}\" LESS_EQUAL \"${end}\")\r\n foreach(RANGE \"${start}\" \"${end}\")\r\n ...\r\n endforeach()\r\n endif()\r\n ```\r\n- All port-based scripts must use `include_guard(GLOBAL)`\r\n to avoid being included multiple times.\r\n\r\n### CMake Versions to Require\r\n\r\n- All CMake scripts, except for `vcpkg.cmake`,\r\n may assume the version of CMake that is present in the\r\n `cmake_minimum_required` of `ports.cmake`.\r\n - This `cmake_minimum_required` should be bumped every time a new version\r\n of CMake is added to `vcpkgTools.xml`, as should the\r\n `cmake_minimum_required` in all of the helper `CMakeLists.txt` files.\r\n- `vcpkg.cmake` must assume a version of CMake back to 3.1 in general\r\n - Specific functions and options may assume a greater CMake version;\r\n if they do, make sure to comment that function or option\r\n with the required CMake version.\r\n\r\n\r\n### Changing Existing Functions\r\n\r\n- Never remove arguments in non-internal functions;\r\n if they should no longer do anything, just take them as normal and warn on use.\r\n- Never add a new mandatory argument.\r\n\r\n### Naming Variables\r\n\r\n- `cmake_parse_arguments`: set prefix to `\"arg\"`\r\n- Local variables are named with `snake_case`\r\n- Internal global variable names are prefixed with `Z_VCPKG_`.\r\n- External experimental global variable names are prefixed with `X_VCPKG_`.\r\n\r\n- Internal functions are prefixed with `z_vcpkg_`\r\n - Functions which are internal to a single function (i.e., helper functions)\r\n are named `[z_]_`, where `` is the name of the function they are\r\n a helper to, and `` is what the helper function does.\r\n - `z_` should be added to the front if `` doesn't have a `z_`,\r\n but don't name a helper function `z_z_foo_bar`.\r\n- Public global variables are named `VCPKG_`.\r\n", "Nav": "#" }, { @@ -236,7 +236,7 @@ { "Path": "/en/docs/maintainers/portfile-functions.html", "Name": "Portfile Functions", - "Source": "\n\n# Portfile helper functions\n- [execute\\_process](execute_process.md)\n- [vcpkg\\_acquire\\_msys](vcpkg_acquire_msys.md)\n- [vcpkg\\_add\\_to\\_path](vcpkg_add_to_path.md)\n- [vcpkg\\_apply\\_patches](vcpkg_apply_patches.md) (deprecated)\n- [vcpkg\\_build\\_cmake](vcpkg_build_cmake.md) (deprecated, use [vcpkg\\_cmake\\_build](ports/vcpkg-cmake/vcpkg_cmake_build.md))\n- [vcpkg\\_build\\_make](vcpkg_build_make.md)\n- [vcpkg\\_build\\_msbuild](vcpkg_build_msbuild.md)\n- [vcpkg\\_build\\_ninja](vcpkg_build_ninja.md)\n- [vcpkg\\_build\\_nmake](vcpkg_build_nmake.md)\n- [vcpkg\\_build\\_qmake](vcpkg_build_qmake.md)\n- [vcpkg\\_buildpath\\_length\\_warning](vcpkg_buildpath_length_warning.md)\n- [vcpkg\\_check\\_features](vcpkg_check_features.md)\n- [vcpkg\\_check\\_linkage](vcpkg_check_linkage.md)\n- [vcpkg\\_clean\\_executables\\_in\\_bin](vcpkg_clean_executables_in_bin.md)\n- [vcpkg\\_clean\\_msbuild](vcpkg_clean_msbuild.md)\n- [vcpkg\\_common\\_definitions](vcpkg_common_definitions.md)\n- [vcpkg\\_configure\\_cmake](vcpkg_configure_cmake.md) (deprecated, use [vcpkg\\_cmake\\_configure](ports/vcpkg-cmake/vcpkg_cmake_configure.md))\n- [vcpkg\\_configure\\_gn](vcpkg_configure_gn.md)\n- [vcpkg\\_configure\\_make](vcpkg_configure_make.md)\n- [vcpkg\\_configure\\_meson](vcpkg_configure_meson.md)\n- [vcpkg\\_configure\\_qmake](vcpkg_configure_qmake.md)\n- [vcpkg\\_copy\\_pdbs](vcpkg_copy_pdbs.md)\n- [vcpkg\\_copy\\_tool\\_dependencies](vcpkg_copy_tool_dependencies.md)\n- [vcpkg\\_copy\\_tools](vcpkg_copy_tools.md)\n- [vcpkg\\_download\\_distfile](vcpkg_download_distfile.md)\n- [vcpkg\\_execute\\_build\\_process](vcpkg_execute_build_process.md)\n- [vcpkg\\_execute\\_in\\_download\\_mode](vcpkg_execute_in_download_mode.md)\n- [vcpkg\\_execute\\_required\\_process](vcpkg_execute_required_process.md)\n- [vcpkg\\_execute\\_required\\_process\\_repeat](vcpkg_execute_required_process_repeat.md)\n- [vcpkg\\_extract\\_source\\_archive](vcpkg_extract_source_archive.md)\n- [vcpkg\\_extract\\_source\\_archive\\_ex](vcpkg_extract_source_archive_ex.md)\n- [vcpkg\\_fail\\_port\\_install](vcpkg_fail_port_install.md)\n- [vcpkg\\_find\\_acquire\\_program](vcpkg_find_acquire_program.md)\n- [vcpkg\\_find\\_fortran](vcpkg_find_fortran.md)\n- [vcpkg\\_fixup\\_cmake\\_targets](vcpkg_fixup_cmake_targets.md) (deprecated, use [vcpkg\\_cmake\\_config\\_fixup](ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.md))\n- [vcpkg\\_fixup\\_pkgconfig](vcpkg_fixup_pkgconfig.md)\n- [vcpkg\\_from\\_bitbucket](vcpkg_from_bitbucket.md)\n- [vcpkg\\_from\\_git](vcpkg_from_git.md)\n- [vcpkg\\_from\\_github](vcpkg_from_github.md)\n- [vcpkg\\_from\\_gitlab](vcpkg_from_gitlab.md)\n- [vcpkg\\_from\\_sourceforge](vcpkg_from_sourceforge.md)\n- [vcpkg\\_get\\_program\\_files\\_platform\\_bitness](vcpkg_get_program_files_platform_bitness.md)\n- [vcpkg\\_get\\_windows\\_sdk](vcpkg_get_windows_sdk.md)\n- [vcpkg\\_install\\_cmake](vcpkg_install_cmake.md) (deprecated, use [vcpkg\\_cmake\\_install](ports/vcpkg-cmake/vcpkg_cmake_install.md))\n- [vcpkg\\_install\\_gn](vcpkg_install_gn.md)\n- [vcpkg\\_install\\_make](vcpkg_install_make.md)\n- [vcpkg\\_install\\_meson](vcpkg_install_meson.md)\n- [vcpkg\\_install\\_msbuild](vcpkg_install_msbuild.md)\n- [vcpkg\\_install\\_nmake](vcpkg_install_nmake.md)\n- [vcpkg\\_install\\_qmake](vcpkg_install_qmake.md)\n- [vcpkg\\_list](vcpkg_list.md)\n- [vcpkg\\_minimum\\_required](vcpkg_minimum_required.md)\n- [vcpkg\\_replace\\_string](vcpkg_replace_string.md)\n\n## Internal Functions\n\n- [vcpkg\\_internal\\_get\\_cmake\\_vars](internal/vcpkg_internal_get_cmake_vars.md)\n- [z\\_vcpkg\\_apply\\_patches](internal/z_vcpkg_apply_patches.md)\n- [z\\_vcpkg\\_forward\\_output\\_variable](internal/z_vcpkg_forward_output_variable.md)\n- [z\\_vcpkg\\_function\\_arguments](internal/z_vcpkg_function_arguments.md)\n- [z\\_vcpkg\\_prettify\\_command\\_line](internal/z_vcpkg_prettify_command_line.md)\n\n## Scripts from Ports\n\n### [vcpkg-cmake](ports/vcpkg-cmake.md)\n\n- [vcpkg\\_cmake\\_build](ports/vcpkg-cmake/vcpkg_cmake_build.md)\n- [vcpkg\\_cmake\\_configure](ports/vcpkg-cmake/vcpkg_cmake_configure.md)\n- [vcpkg\\_cmake\\_install](ports/vcpkg-cmake/vcpkg_cmake_install.md)\n\n### [vcpkg-cmake-config](ports/vcpkg-cmake-config.md)\n\n- [vcpkg\\_cmake\\_config\\_fixup](ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.md)\n\n### [vcpkg-pkgconfig-get-modules](ports/vcpkg-pkgconfig-get-modules.md)\n\n- [x\\_vcpkg\\_pkgconfig\\_get\\_modules](ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.md)\n", + "Source": "\n\n# Portfile helper functions\n- [execute\\_process](execute_process.md)\n- [vcpkg\\_acquire\\_msys](vcpkg_acquire_msys.md)\n- [vcpkg\\_add\\_to\\_path](vcpkg_add_to_path.md)\n- [vcpkg\\_apply\\_patches](vcpkg_apply_patches.md) (deprecated)\n- [vcpkg\\_build\\_cmake](vcpkg_build_cmake.md) (deprecated, use [vcpkg\\_cmake\\_build](ports/vcpkg-cmake/vcpkg_cmake_build.md))\n- [vcpkg\\_build\\_make](vcpkg_build_make.md)\n- [vcpkg\\_build\\_msbuild](vcpkg_build_msbuild.md)\n- [vcpkg\\_build\\_ninja](vcpkg_build_ninja.md)\n- [vcpkg\\_build\\_nmake](vcpkg_build_nmake.md)\n- [vcpkg\\_build\\_qmake](vcpkg_build_qmake.md)\n- [vcpkg\\_buildpath\\_length\\_warning](vcpkg_buildpath_length_warning.md)\n- [vcpkg\\_check\\_features](vcpkg_check_features.md)\n- [vcpkg\\_check\\_linkage](vcpkg_check_linkage.md)\n- [vcpkg\\_clean\\_executables\\_in\\_bin](vcpkg_clean_executables_in_bin.md)\n- [vcpkg\\_clean\\_msbuild](vcpkg_clean_msbuild.md)\n- [vcpkg\\_common\\_definitions](vcpkg_common_definitions.md)\n- [vcpkg\\_configure\\_cmake](vcpkg_configure_cmake.md) (deprecated, use [vcpkg\\_cmake\\_configure](ports/vcpkg-cmake/vcpkg_cmake_configure.md))\n- [vcpkg\\_configure\\_gn](vcpkg_configure_gn.md)\n- [vcpkg\\_configure\\_make](vcpkg_configure_make.md)\n- [vcpkg\\_configure\\_meson](vcpkg_configure_meson.md)\n- [vcpkg\\_configure\\_qmake](vcpkg_configure_qmake.md)\n- [vcpkg\\_copy\\_pdbs](vcpkg_copy_pdbs.md)\n- [vcpkg\\_copy\\_tool\\_dependencies](vcpkg_copy_tool_dependencies.md)\n- [vcpkg\\_copy\\_tools](vcpkg_copy_tools.md)\n- [vcpkg\\_download\\_distfile](vcpkg_download_distfile.md)\n- [vcpkg\\_execute\\_build\\_process](vcpkg_execute_build_process.md)\n- [vcpkg\\_execute\\_in\\_download\\_mode](vcpkg_execute_in_download_mode.md)\n- [vcpkg\\_execute\\_required\\_process](vcpkg_execute_required_process.md)\n- [vcpkg\\_execute\\_required\\_process\\_repeat](vcpkg_execute_required_process_repeat.md)\n- [vcpkg\\_extract\\_source\\_archive](vcpkg_extract_source_archive.md)\n- [vcpkg\\_extract\\_source\\_archive\\_ex](vcpkg_extract_source_archive_ex.md)\n- [vcpkg\\_fail\\_port\\_install](vcpkg_fail_port_install.md)\n- [vcpkg\\_find\\_acquire\\_program](vcpkg_find_acquire_program.md)\n- [vcpkg\\_find\\_fortran](vcpkg_find_fortran.md)\n- [vcpkg\\_fixup\\_cmake\\_targets](vcpkg_fixup_cmake_targets.md) (deprecated, use [vcpkg\\_cmake\\_config\\_fixup](ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.md))\n- [vcpkg\\_fixup\\_pkgconfig](vcpkg_fixup_pkgconfig.md)\n- [vcpkg\\_from\\_bitbucket](vcpkg_from_bitbucket.md)\n- [vcpkg\\_from\\_git](vcpkg_from_git.md)\n- [vcpkg\\_from\\_github](vcpkg_from_github.md)\n- [vcpkg\\_from\\_gitlab](vcpkg_from_gitlab.md)\n- [vcpkg\\_from\\_sourceforge](vcpkg_from_sourceforge.md)\n- [vcpkg\\_get\\_program\\_files\\_platform\\_bitness](vcpkg_get_program_files_platform_bitness.md)\n- [vcpkg\\_get\\_windows\\_sdk](vcpkg_get_windows_sdk.md)\n- [vcpkg\\_install\\_cmake](vcpkg_install_cmake.md) (deprecated, use [vcpkg\\_cmake\\_install](ports/vcpkg-cmake/vcpkg_cmake_install.md))\n- [vcpkg\\_install\\_gn](vcpkg_install_gn.md)\n- [vcpkg\\_install\\_make](vcpkg_install_make.md)\n- [vcpkg\\_install\\_meson](vcpkg_install_meson.md)\n- [vcpkg\\_install\\_msbuild](vcpkg_install_msbuild.md)\n- [vcpkg\\_install\\_nmake](vcpkg_install_nmake.md)\n- [vcpkg\\_install\\_qmake](vcpkg_install_qmake.md)\n- [vcpkg\\_list](vcpkg_list.md)\n- [vcpkg\\_minimum\\_required](vcpkg_minimum_required.md)\n- [vcpkg\\_replace\\_string](vcpkg_replace_string.md)\n\n## Internal Functions\n\n- [z\\_vcpkg\\_apply\\_patches](internal/z_vcpkg_apply_patches.md)\n- [z\\_vcpkg\\_forward\\_output\\_variable](internal/z_vcpkg_forward_output_variable.md)\n- [z\\_vcpkg\\_function\\_arguments](internal/z_vcpkg_function_arguments.md)\n- [z\\_vcpkg\\_get\\_cmake\\_vars](internal/z_vcpkg_get_cmake_vars.md)\n- [z\\_vcpkg\\_prettify\\_command\\_line](internal/z_vcpkg_prettify_command_line.md)\n\n## Scripts from Ports\n\n### [vcpkg-cmake](ports/vcpkg-cmake.md)\n\n- [vcpkg\\_cmake\\_build](ports/vcpkg-cmake/vcpkg_cmake_build.md)\n- [vcpkg\\_cmake\\_configure](ports/vcpkg-cmake/vcpkg_cmake_configure.md)\n- [vcpkg\\_cmake\\_get\\_vars](ports/vcpkg-cmake/vcpkg_cmake_get_vars.md)\n- [vcpkg\\_cmake\\_install](ports/vcpkg-cmake/vcpkg_cmake_install.md)\n\n### [vcpkg-cmake-config](ports/vcpkg-cmake-config.md)\n\n- [vcpkg\\_cmake\\_config\\_fixup](ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.md)\n\n### [vcpkg-pkgconfig-get-modules](ports/vcpkg-pkgconfig-get-modules.md)\n\n- [x\\_vcpkg\\_pkgconfig\\_get\\_modules](ports/vcpkg-pkgconfig-get-modules/x_vcpkg_pkgconfig_get_modules.md)\n", "Nav": "#" }, { @@ -344,7 +344,7 @@ { "Path": "/en/docs/maintainers/vcpkg_configure_cmake.html", "Name": "vcpkg_configure_cmake", - "Source": "# vcpkg_configure_cmake\n\n**This function has been deprecated in favor of [`vcpkg_cmake_configure`](ports/vcpkg-cmake/vcpkg_cmake_configure.md) from the vcpkg-cmake port.**\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/vcpkg_configure_cmake.md).\n\nConfigure CMake for Debug and Release builds of a project.\n\n## Usage\n```cmake\nvcpkg_configure_cmake(\n SOURCE_PATH <${SOURCE_PATH}>\n [PREFER_NINJA]\n [DISABLE_PARALLEL_CONFIGURE]\n [NO_CHARSET_FLAG]\n [GENERATOR <\"NMake Makefiles\">]\n [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...]\n [OPTIONS_RELEASE <-DOPTIMIZE=1>...]\n [OPTIONS_DEBUG <-DDEBUGGABLE=1>...]\n [MAYBE_UNUSED_VARIABLES ...]\n)\n```\n\n## Parameters\n### SOURCE_PATH\nSpecifies the directory containing the `CMakeLists.txt`.\nBy convention, this is usually set in the portfile as the variable `SOURCE_PATH`.\n\n### PREFER_NINJA\nIndicates that, when available, Vcpkg should use Ninja to perform the build.\nThis should be specified unless the port is known to not work under Ninja.\n\n### DISABLE_PARALLEL_CONFIGURE\nDisables running the CMake configure step in parallel.\nThis is needed for libraries which write back into their source directory during configure.\n\nThis also disables CMAKE_DISABLE_SOURCE_CHANGES.\n\n### NO_CHARSET_FLAG\nDisables passing `utf-8` as the default character set to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`.\n\nThis is needed for libraries that set their own source code's character set.\n\n### GENERATOR\nSpecifies the precise generator to use.\n\nThis is useful if some project-specific buildsystem has been wrapped in a cmake script that won't perform an actual build.\nIf used for this purpose, it should be set to `\"NMake Makefiles\"`.\n\n### OPTIONS\nAdditional options passed to CMake during the configuration.\n\n### OPTIONS_RELEASE\nAdditional options passed to CMake during the Release configuration. These are in addition to `OPTIONS`.\n\n### OPTIONS_DEBUG\nAdditional options passed to CMake during the Debug configuration. These are in addition to `OPTIONS`.\n\n### MAYBE_UNUSED_VARIABLES\nAny CMake variables which are explicitly passed in, but which may not be used on all platforms.\n\n### LOGNAME\nName of the log to write the output of the configure call to.\n\n## Notes\nThis command supplies many common arguments to CMake. To see the full list, examine the source.\n\n## Examples\n\n* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake)\n* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake)\n* [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake)\n* [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake)\n\n## Source\n[scripts/cmake/vcpkg\\_configure\\_cmake.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_cmake.cmake)\n", + "Source": "# vcpkg_configure_cmake\n\n**This function has been deprecated in favor of [`vcpkg_cmake_configure`](ports/vcpkg-cmake/vcpkg_cmake_configure.md) from the vcpkg-cmake port.**\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/vcpkg_configure_cmake.md).\n\nConfigure CMake for Debug and Release builds of a project.\n\n## Usage\n```cmake\nvcpkg_configure_cmake(\n SOURCE_PATH <${SOURCE_PATH}>\n [PREFER_NINJA]\n [DISABLE_PARALLEL_CONFIGURE]\n [NO_CHARSET_FLAG]\n [GENERATOR <\"NMake Makefiles\">]\n [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...]\n [OPTIONS_RELEASE <-DOPTIMIZE=1>...]\n [OPTIONS_DEBUG <-DDEBUGGABLE=1>...]\n [MAYBE_UNUSED_VARIABLES ...]\n)\n```\n\n## Parameters\n### SOURCE_PATH\nSpecifies the directory containing the `CMakeLists.txt`.\nBy convention, this is usually set in the portfile as the variable `SOURCE_PATH`.\n\n### PREFER_NINJA\nIndicates that, when available, Vcpkg should use Ninja to perform the build.\nThis should be specified unless the port is known to not work under Ninja.\n\n### DISABLE_PARALLEL_CONFIGURE\nDisables running the CMake configure step in parallel.\nThis is needed for libraries which write back into their source directory during configure.\n\nThis also disables CMAKE_DISABLE_SOURCE_CHANGES.\n\n### NO_CHARSET_FLAG\nDisables passing `utf-8` as the default character set to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`.\n\nThis is needed for libraries that set their own source code's character set.\n\n### GENERATOR\nSpecifies the precise generator to use.\n\nThis is useful if some project-specific buildsystem has been wrapped in a cmake script that won't perform an actual build.\nIf used for this purpose, it should be set to `\"NMake Makefiles\"`.\n\n### OPTIONS\nAdditional options passed to CMake during the configuration.\n\n### OPTIONS_RELEASE\nAdditional options passed to CMake during the Release configuration. These are in addition to `OPTIONS`.\n\n### OPTIONS_DEBUG\nAdditional options passed to CMake during the Debug configuration. These are in addition to `OPTIONS`.\n\n### MAYBE_UNUSED_VARIABLES\nAny CMake variables which are explicitly passed in, but which may not be used on all platforms.\nFor example:\n```cmake\nvcpkg_cmake_configure(\n ...\n OPTIONS\n -DBUILD_EXAMPLE=OFF\n ...\n MAYBE_UNUSED_VARIABLES\n BUILD_EXAMPLE\n)\n```\n\n### LOGNAME\nName of the log to write the output of the configure call to.\n\n## Notes\nThis command supplies many common arguments to CMake. To see the full list, examine the source.\n\n## Examples\n\n* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake)\n* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake)\n* [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake)\n* [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake)\n\n## Source\n[scripts/cmake/vcpkg\\_configure\\_cmake.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_cmake.cmake)\n", "Nav": "#" }, { @@ -563,6 +563,36 @@ "Source": "# vcpkg_replace_string\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/vcpkg_replace_string.md).\n\nReplace a string in a file.\n\n```cmake\nvcpkg_replace_string( )\n```\n\n## Source\n[scripts/cmake/vcpkg\\_replace\\_string.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_replace_string.cmake)\n", "Nav": "#" }, + { + "Path": "/en/docs/maintainers/internal/z_vcpkg_apply_patches.html", + "Name": "z_vcpkg_apply_patches", + "Source": "# z_vcpkg_apply_patches\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\n**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\n\nApply a set of patches to a source tree.\n\n```cmake\nz_vcpkg_apply_patches(\n SOURCE_PATH \n [QUIET]\n PATCHES ...\n)\n```\n\nThe `` should be set to `${SOURCE_PATH}` by convention,\nand is the path to apply the patches in.\n\n`z_vcpkg_apply_patches` will take the list of ``es,\nwhich are by default relative to the port directory,\nand apply them in order using `git apply`.\nGenerally, these ``es take the form of `some.patch`\nto select patches in the port directory.\nOne may also download patches and use `${VCPKG_DOWNLOADS}/path/to/some.patch`.\n\nIf `QUIET` is not passed, it is a fatal error for a patch to fail to apply;\notherwise, if `QUIET` is passed, no message is printed.\nThis should only be used for edge cases, such as patches that are known to fail even on a clean source tree.\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_apply\\_patches.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_apply_patches.cmake)\n", + "Nav": "#" + }, + { + "Path": "/en/docs/maintainers/internal/z_vcpkg_forward_output_variable.html", + "Name": "z_vcpkg_forward_output_variable", + "Source": "# z_vcpkg_forward_output_variable\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\nThis macro helps with forwarding values from inner function calls,\nthrough a local function scope, into pointer out parameters.\n\n```cmake\nz_vcpkg_forward_output_variable(ptr_to_parent_var var_to_forward)\n```\n\nis equivalent to\n\n```cmake\nif(DEFINED ptr_to_parent_var)\n if(DEFINED value_var)\n set(\"${ptr_to_parent_var}\" \"${value_var}\" PARENT_SCOPE)\n else()\n unset(\"${ptr_to_parent_var}\" PARENT_SCOPE)\n endif()\nendif()\n```\n\nTake note that the first argument should be a local variable that has a value of the parent variable name.\nMost commonly, this local is the result of a pointer-out parameter to a function.\nIf the variable in the first parameter is not defined, this function does nothing,\nsimplifying functions with optional out parameters.\nMost commonly, this should be used in cases like:\n\n```cmake\nfunction(my_function out_var)\n file(SHA512 \"somefile.txt\" local_var)\n z_vcpkg_forward_output_variable(out_var local_var)\nendfunction()\n```\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_forward\\_output\\_variable.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_forward_output_variable.cmake)\n", + "Nav": "#" + }, + { + "Path": "/en/docs/maintainers/internal/z_vcpkg_function_arguments.html", + "Name": "z_vcpkg_function_arguments", + "Source": "# z_vcpkg_function_arguments\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\n**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\nGet a list of the arguments which were passed in.\nUnlike `ARGV`, which is simply the arguments joined with `;`,\nso that `(A B)` is not distinguishable from `(\"A;B\")`,\nthis macro gives `\"A;B\"` for the first argument list,\nand `\"A\\;B\"` for the second.\n\n```cmake\nz_vcpkg_function_arguments( [])\n```\n\n`z_vcpkg_function_arguments` gets the arguments between `ARGV` and the last argument.\n`` defaults to `0`, so that all arguments are taken.\n\n## Example:\n```cmake\nfunction(foo_replacement)\n z_vcpkg_function_arguments(ARGS)\n foo(${ARGS})\n ...\nendfunction()\n```\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_function\\_arguments.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_function_arguments.cmake)\n", + "Nav": "#" + }, + { + "Path": "/en/docs/maintainers/internal/z_vcpkg_get_cmake_vars.html", + "Name": "z_vcpkg_get_cmake_vars", + "Source": "# z_vcpkg_get_cmake_vars\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\n**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\nRuns a cmake configure with a dummy project to extract certain cmake variables\n\n## Usage\n```cmake\nz_vcpkg_get_cmake_vars()\n```\n\n`z_vcpkg_get_cmake_vars(cmake_vars_file)` sets `` to\na path to a generated CMake file, with the detected `CMAKE_*` variables\nre-exported as `VCPKG_DETECTED_*`.\n\n## Notes\nAvoid usage in portfiles. \n\nAll calls to `z_vcpkg_get_cmake_vars` will result in the same output file;\nthe output file is not generated multiple times.\n\n## Examples\n\n* [vcpkg_configure_make](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_make.cmake)\n\n### Basic Usage\n\n```cmake\nz_vcpkg_get_cmake_vars(cmake_vars_file)\ninclude(\"${cmake_vars_file}\")\nmessage(STATUS \"detected CXX flags: ${VCPKG_DETECTED_CXX_FLAGS}\")\n```\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_get\\_cmake\\_vars.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_get_cmake_vars.cmake)\n", + "Nav": "#" + }, + { + "Path": "/en/docs/maintainers/internal/z_vcpkg_prettify_command_line.html", + "Name": "z_vcpkg_prettify_command_line", + "Source": "# z_vcpkg_prettify_command_line\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\n**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\nTurn a command line into a formatted string.\n\n```cmake\nz_vcpkg_prettify_command_line( ...)\n```\n\nThis command is for internal use, when printing out to a message.\n\n## Examples\n\n* `scripts/cmake/vcpkg_execute_build_process.cmake`\n* `scripts/cmake/vcpkg_execute_required_process.cmake`\n* `scripts/cmake/vcpkg_execute_required_process_repeat.cmake`\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_prettify\\_command\\_line.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_prettify_command_line.cmake)\n", + "Nav": "#" + }, { "Path": "/en/docs/maintainers/ports/vcpkg-cmake-config.html", "Name": "vcpkg Cmake Config", @@ -602,43 +632,19 @@ { "Path": "/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.html", "Name": "vcpkg_cmake_configure", - "Source": "# vcpkg_cmake_configure\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.md).\n\nConfigure a CMake buildsystem.\n\n```cmake\nvcpkg_cmake_configure(\n SOURCE_PATH \n [LOGFILE_BASE ]\n [DISABLE_PARALLEL_CONFIGURE]\n [NO_CHARSET_FLAG]\n [WINDOWS_USE_MSBUILD]\n [GENERATOR ]\n [OPTIONS\n ...]\n [OPTIONS_RELEASE\n ...]\n [OPTIONS_DEBUG\n ...]\n [MAYBE_UNUSED_VARIABLES\n ...]\n)\n```\n\n`vcpkg_cmake_configure` configures a CMake build system for use with\n`vcpkg_cmake_buildsystem_build` and `vcpkg_cmake_buildsystem_install`.\n`source-path` is where the source is located; by convention,\nthis is usually `${SOURCE_PATH}`, which is set by one of the `vcpkg_from_*` functions.\nThis function configures the build system for both Debug and Release builds by default,\nassuming that `VCPKG_BUILD_TYPE` is not set; if it is, then it will only configure for\nthat build type.\n\nUse the `OPTIONS` argument to set the configure settings for both release and debug,\nand use `OPTIONS_RELEASE` and `OPTIONS_DEBUG` to set the configure settings for\nrelease only and debug only respectively.\n\nBy default, when possible, `vcpkg_cmake_configure` uses [ninja-build]\nas its build system. If the `WINDOWS_USE_MSBUILD` argument is passed, then\n`vcpkg_cmake_configure` will use a Visual Studio generator on Windows;\non every other platform, `vcpkg_cmake_configure` just uses Ninja.\n\n[ninja-build]: https://ninja-build.org/\n\nAdditionally, one may pass the specific generator a port should use with `GENERATOR`.\nThis is useful if some project-specific buildsystem\nhas been wrapped in a CMake build system that doesn't perform an actual build.\nIf used for this purpose, it should be set to `\"NMake Makefiles\"`.\n`vcpkg_cmake_buildsystem_build` and `install` do not support this being set to anything\nexcept for NMake.\n\nFor libraries which cannot be configured in parallel,\npass the `DISABLE_PARALLEL_CONFIGURE` flag. This is needed, for example,\nif the library's build system writes back into the source directory during configure.\nThis also disables the `CMAKE_DISABLE_SOURCE_CHANGES` option.\n\nBy default, this function adds flags to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`\nwhich set the default character set to utf-8 for MSVC.\nIf the library sets its own code page, pass the `NO_CHARSET_FLAG` option.\n\nThis function makes certain that all options passed in are used by the\nunderlying CMake build system. If there are options that might be unused,\nperhaps on certain platforms, pass those variable names to\n`MAYBE_UNUSED_VARIABLES`.\n\n`LOGFILE_BASE` is used to set the base of the logfile names;\nby default, this is `config`, and thus the logfiles end up being something like\n`config-x86-windows-dbg.log`. You can set it to anything you like;\nif you set it to `config-the-first`,\nyou'll get something like `config-the-first-x86-windows.dbg.log`.\n\n## Notes\nThis command supplies many common arguments to CMake. To see the full list, examine the source.\n\n## Examples\n\n* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake)\n* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake)\n* [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake)\n* [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake)\n\n## Source\n[ports/vcpkg-cmake/vcpkg\\_cmake\\_configure.cmake](https://github.com/Microsoft/vcpkg/blob/master/ports/vcpkg-cmake/vcpkg_cmake_configure.cmake)\n", - "Nav": "#" - }, - { - "Path": "/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_install.html", - "Name": "vcpkg_cmake_install", - "Source": "# vcpkg_cmake_install\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_install.md).\n\nBuild and install a cmake project.\n\n```cmake\nvcpkg_cmake_install(\n [DISABLE_PARALLEL]\n [ADD_BIN_TO_PATH]\n)\n```\n\n`vcpkg_cmake_install` transparently forwards to [`vcpkg_cmake_build()`],\nwith additional parameters to set the `TARGET` to `install`,\nand to set the `LOGFILE_ROOT` to `install` as well.\n\n[`vcpkg_cmake_build()`]: vcpkg_cmake_build.cmake\n\n## Examples:\n\n* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake)\n\n## Source\n[ports/vcpkg-cmake/vcpkg\\_cmake\\_install.cmake](https://github.com/Microsoft/vcpkg/blob/master/ports/vcpkg-cmake/vcpkg_cmake_install.cmake)\n", + "Source": "# vcpkg_cmake_configure\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_configure.md).\n\nConfigure a CMake buildsystem.\n\n```cmake\nvcpkg_cmake_configure(\n SOURCE_PATH \n [LOGFILE_BASE ]\n [DISABLE_PARALLEL_CONFIGURE]\n [NO_CHARSET_FLAG]\n [WINDOWS_USE_MSBUILD]\n [GENERATOR ]\n [OPTIONS\n ...]\n [OPTIONS_RELEASE\n ...]\n [OPTIONS_DEBUG\n ...]\n [MAYBE_UNUSED_VARIABLES\n ...]\n)\n```\n\n`vcpkg_cmake_configure` configures a CMake build system for use with\n`vcpkg_cmake_buildsystem_build` and `vcpkg_cmake_buildsystem_install`.\n`source-path` is where the source is located; by convention,\nthis is usually `${SOURCE_PATH}`, which is set by one of the `vcpkg_from_*` functions.\nThis function configures the build system for both Debug and Release builds by default,\nassuming that `VCPKG_BUILD_TYPE` is not set; if it is, then it will only configure for\nthat build type.\n\nUse the `OPTIONS` argument to set the configure settings for both release and debug,\nand use `OPTIONS_RELEASE` and `OPTIONS_DEBUG` to set the configure settings for\nrelease only and debug only respectively.\n\nBy default, when possible, `vcpkg_cmake_configure` uses [ninja-build]\nas its build system. If the `WINDOWS_USE_MSBUILD` argument is passed, then\n`vcpkg_cmake_configure` will use a Visual Studio generator on Windows;\non every other platform, `vcpkg_cmake_configure` just uses Ninja.\n\n[ninja-build]: https://ninja-build.org/\n\nAdditionally, one may pass the specific generator a port should use with `GENERATOR`.\nThis is useful if some project-specific buildsystem\nhas been wrapped in a CMake build system that doesn't perform an actual build.\nIf used for this purpose, it should be set to `\"NMake Makefiles\"`.\n`vcpkg_cmake_buildsystem_build` and `install` do not support this being set to anything\nexcept for NMake.\n\nFor libraries which cannot be configured in parallel,\npass the `DISABLE_PARALLEL_CONFIGURE` flag. This is needed, for example,\nif the library's build system writes back into the source directory during configure.\nThis also disables the `CMAKE_DISABLE_SOURCE_CHANGES` option.\n\nBy default, this function adds flags to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`\nwhich set the default character set to utf-8 for MSVC.\nIf the library sets its own code page, pass the `NO_CHARSET_FLAG` option.\n\nThis function makes certain that all options passed in are used by the\nunderlying CMake build system. If there are options that might be unused,\nperhaps on certain platforms, pass those variable names to\n`MAYBE_UNUSED_VARIABLES`. For example:\n```cmake\nvcpkg_cmake_configure(\n ...\n OPTIONS\n -DBUILD_EXAMPLE=OFF\n ...\n MAYBE_UNUSED_VARIABLES\n BUILD_EXAMPLE\n)\n```\n\n`LOGFILE_BASE` is used to set the base of the logfile names;\nby default, this is `config`, and thus the logfiles end up being something like\n`config-x86-windows-dbg.log`. You can set it to anything you like;\nif you set it to `config-the-first`,\nyou'll get something like `config-the-first-x86-windows.dbg.log`.\n\n## Notes\nThis command supplies many common arguments to CMake. To see the full list, examine the source.\n\n## Examples\n\n* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake)\n* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake)\n* [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake)\n* [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake)\n\n## Source\n[ports/vcpkg-cmake/vcpkg\\_cmake\\_configure.cmake](https://github.com/Microsoft/vcpkg/blob/master/ports/vcpkg-cmake/vcpkg_cmake_configure.cmake)\n", "Nav": "#" }, { - "Path": "/en/docs/maintainers/internal/vcpkg_internal_get_cmake_vars.html", - "Name": "vcpkg_internal_get_cmake_vars", - "Source": "# vcpkg_internal_get_cmake_vars\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\n**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\nRuns a cmake configure with a dummy project to extract certain cmake variables\n\n## Usage\n```cmake\nvcpkg_internal_get_cmake_vars(\n [OUTPUT_FILE ]\n [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...]\n)\n```\n\n## Parameters\n### OPTIONS\nAdditional options to pass to the test configure call \n\n### OUTPUT_FILE\nVariable to return the path to the generated cmake file with the detected `CMAKE_` variables set as `VCKPG_DETECTED_`\n\n## Notes\nIf possible avoid usage in portfiles. \n\n## Examples\n\n* [vcpkg_configure_make](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_make.cmake)\n\n## Source\n[scripts/cmake/vcpkg\\_internal\\_get\\_cmake\\_vars.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_internal_get_cmake_vars.cmake)\n", + "Path": "/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_get_vars.html", + "Name": "vcpkg_cmake_get_vars", + "Source": "# vcpkg_cmake_get_vars\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_get_vars.md).\n\nRuns a cmake configure with a dummy project to extract certain cmake variables\n\n## Usage\n```cmake\nvcpkg_cmake_get_vars()\n```\n\n`vcpkg_cmake_get_vars()` sets `` to\na path to a generated CMake file, with the detected `CMAKE_*` variables\nre-exported as `VCPKG_DETECTED_CMAKE_*`.\n\n## Notes\nAvoid usage in portfiles.\n\nAll calls to `vcpkg_cmake_get_vars` will result in the same output file;\nthe output file is not generated multiple times.\n\n### Basic Usage\n\n```cmake\nvcpkg_cmake_get_vars(cmake_vars_file)\ninclude(\"${cmake_vars_file}\")\nmessage(STATUS \"detected CXX flags: ${VCPKG_DETECTED_CMAKE_CXX_FLAGS}\")\n```\n\n## Source\n[ports/vcpkg-cmake/vcpkg\\_cmake\\_get\\_vars.cmake](https://github.com/Microsoft/vcpkg/blob/master/ports/vcpkg-cmake/vcpkg_cmake_get_vars.cmake)\n", "Nav": "#" }, { - "Path": "/en/docs/maintainers/internal/z_vcpkg_apply_patches.html", - "Name": "z_vcpkg_apply_patches", - "Source": "# z_vcpkg_apply_patches\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\n**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\n\nApply a set of patches to a source tree.\n\n```cmake\nz_vcpkg_apply_patches(\n SOURCE_PATH \n [QUIET]\n PATCHES ...\n)\n```\n\nThe `` should be set to `${SOURCE_PATH}` by convention,\nand is the path to apply the patches in.\n\n`z_vcpkg_apply_patches` will take the list of ``es,\nwhich are by default relative to the port directory,\nand apply them in order using `git apply`.\nGenerally, these ``es take the form of `some.patch`\nto select patches in the port directory.\nOne may also download patches and use `${VCPKG_DOWNLOADS}/path/to/some.patch`.\n\nIf `QUIET` is not passed, it is a fatal error for a patch to fail to apply;\notherwise, if `QUIET` is passed, no message is printed.\nThis should only be used for edge cases, such as patches that are known to fail even on a clean source tree.\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_apply\\_patches.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_apply_patches.cmake)\n", - "Nav": "#" - }, - { - "Path": "/en/docs/maintainers/internal/z_vcpkg_forward_output_variable.html", - "Name": "z_vcpkg_forward_output_variable", - "Source": "# z_vcpkg_forward_output_variable\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\nThis macro helps with forwarding values from inner function calls,\nthrough a local function scope, into pointer out parameters.\n\n```cmake\nz_vcpkg_forward_output_variable(ptr_to_parent_var var_to_forward)\n```\n\nis equivalent to\n\n```cmake\nif(DEFINED ptr_to_parent_var)\n if(DEFINED value_var)\n set(\"${ptr_to_parent_var}\" \"${value_var}\" PARENT_SCOPE)\n else()\n unset(\"${ptr_to_parent_var}\" PARENT_SCOPE)\n endif()\nendif()\n```\n\nTake note that the first argument should be a local variable that has a value of the parent variable name.\nMost commonly, this local is the result of a pointer-out parameter to a function.\nIf the variable in the first parameter is not defined, this function does nothing,\nsimplifying functions with optional out parameters.\nMost commonly, this should be used in cases like:\n\n```cmake\nfunction(my_function out_var)\n file(SHA512 \"somefile.txt\" local_var)\n z_vcpkg_forward_output_variable(out_var local_var)\nendfunction()\n```\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_forward\\_output\\_variable.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_forward_output_variable.cmake)\n", - "Nav": "#" - }, - { - "Path": "/en/docs/maintainers/internal/z_vcpkg_function_arguments.html", - "Name": "z_vcpkg_function_arguments", - "Source": "# z_vcpkg_function_arguments\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\n**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\nGet a list of the arguments which were passed in.\nUnlike `ARGV`, which is simply the arguments joined with `;`,\nso that `(A B)` is not distinguishable from `(\"A;B\")`,\nthis macro gives `\"A;B\"` for the first argument list,\nand `\"A\\;B\"` for the second.\n\n```cmake\nz_vcpkg_function_arguments( [])\n```\n\n`z_vcpkg_function_arguments` gets the arguments between `ARGV` and the last argument.\n`` defaults to `0`, so that all arguments are taken.\n\n## Example:\n```cmake\nfunction(foo_replacement)\n z_vcpkg_function_arguments(ARGS)\n foo(${ARGS})\n ...\nendfunction()\n```\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_function\\_arguments.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_function_arguments.cmake)\n", - "Nav": "#" - }, - { - "Path": "/en/docs/maintainers/internal/z_vcpkg_prettify_command_line.html", - "Name": "z_vcpkg_prettify_command_line", - "Source": "# z_vcpkg_prettify_command_line\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/).\n\n**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.**\nTurn a command line into a formatted string.\n\n```cmake\nz_vcpkg_prettify_command_line( ...)\n```\n\nThis command is for internal use, when printing out to a message.\n\n## Examples\n\n* `scripts/cmake/vcpkg_execute_build_process.cmake`\n* `scripts/cmake/vcpkg_execute_required_process.cmake`\n* `scripts/cmake/vcpkg_execute_required_process_repeat.cmake`\n\n## Source\n[scripts/cmake/z\\_vcpkg\\_prettify\\_command\\_line.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/z_vcpkg_prettify_command_line.cmake)\n", + "Path": "/en/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_install.html", + "Name": "vcpkg_cmake_install", + "Source": "# vcpkg_cmake_install\n\nThe latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/ports/vcpkg-cmake/vcpkg_cmake_install.md).\n\nBuild and install a cmake project.\n\n```cmake\nvcpkg_cmake_install(\n [DISABLE_PARALLEL]\n [ADD_BIN_TO_PATH]\n)\n```\n\n`vcpkg_cmake_install` transparently forwards to [`vcpkg_cmake_build()`],\nwith additional parameters to set the `TARGET` to `install`,\nand to set the `LOGFILE_ROOT` to `install` as well.\n\n[`vcpkg_cmake_build()`]: vcpkg_cmake_build.cmake\n\n## Examples:\n\n* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake)\n\n## Source\n[ports/vcpkg-cmake/vcpkg\\_cmake\\_install.cmake](https://github.com/Microsoft/vcpkg/blob/master/ports/vcpkg-cmake/vcpkg_cmake_install.cmake)\n", "Nav": "#" } ] diff --git a/scripts/generateDocs.ps1 b/scripts/generateDocs.ps1 index b60e13c97..36f1411c6 100644 --- a/scripts/generateDocs.ps1 +++ b/scripts/generateDocs.ps1 @@ -178,6 +178,18 @@ function processTreeViewLayer { if(-Not $File.Name.Contains(".md")) { continue; } + + if ($mapTable.ContainsKey($File.Name)) { + $readable = $mapTable[$File.Name] + } else { + $firstLine = Get-Content $File -TotalCount 1 + if($firstLine -match "^#+ (.*)") { + $readable = $Matches.1 -replace "``(.*)``",'$1' + } else { + $readable = convertToReadableFormat -name $File.Name + } + } + $relativePath = relativeToRootDomain -fileFullName $File.FullName $relativeHTMLPath = markdownToHTMLExtension -name $relativePath @@ -185,14 +197,14 @@ function processTreeViewLayer { $treeViewHTML += '
  • ' $treeViewHTML += '' - $treeViewHTML += convertToReadableFormat -name $File.Name + $treeViewHTML += $readable $treeViewHTML += '
  • ' } else { $treeViewHTML += '' $treeViewHTML += '
  • ' - $treeViewHTML += convertToReadableFormat -name $File.Name + $treeViewHTML += $readable $treeViewHTML += "
  • " } $treeViewHTML += "`n" diff --git a/scripts/rebuild.sh b/scripts/rebuild.sh index 612421d16..7e0ca6ae7 100755 --- a/scripts/rebuild.sh +++ b/scripts/rebuild.sh @@ -1,9 +1,9 @@ #/bin/bash cd -P -- "$(dirname -- "${BASH_SOURCE[0]}")" -if [ ! -f ../vcpkg ] +if [ ! -e ../vcpkg ] then - vcpkg_commit=8dddc6c899ce6fdbeab38b525a31e7f23cb2d5bb + vcpkg_commit=bd5ea16b97e91cb620fed0e10b7d9b3a8a943a52 git init ../vcpkg git -C ../vcpkg fetch --depth 1 https://github.com/Microsoft/vcpkg $vcpkg_commit git -C ../vcpkg checkout FETCH_HEAD