This new configuration mechanism is an experimental feature subject to breaking changes in future releases.

The global.conf file is located in the Conan user home directory.

Global configuration

  • core:required_conan_version = expression allows defining a version expression like >=1.30. Conan will raise an error if its current version does not satisfy the condition
  • core.package_id:msvc_visual_incompatible allows opting-out the fallback from the new msvc compiler to the Visual Studio compiler existing binaries

Tools configurations

Tools and user configurations allows them to be defined both in the global.conf file and in profile files. Profile values will have priority over globally defined ones in global.conf, and can be defined as:


[conf] = 16

To list all possible configurations available, run conan config list.

$ conan config list
Supported Conan *experimental* global.conf and [conf] properties:
core:required_conan_version: Raise if current version does not match the defined range.
core:non_interactive: Disable interactive user input, raises error if input necessary
core.package_id:msvc_visual_incompatible: Allows opting-out the fallback from the new msvc compiler to the Visual Studio compiler existing binaries
core:default_profile: Defines the default host profile ('default' by default)
core:default_build_profile: Defines the default build profile (None by default)
core.upload:retry: Number of retries in case of failure when uploading to Conan server
core.upload:retry_wait: Seconds to wait between upload attempts to Conan server Number of concurrent threads to download packages Number of retries in case of failure when downloading from Conan server Seconds to wait between download attempts from Conan server Maximum number of connection retries (requests library) Number of seconds without response to timeout (requests library) List of urls to skip from proxies configuration Dictionary containing the proxy configuration Path containing a custom Cacert file Path or tuple of files containing a client cert (and key) If defined, the proxies system env-vars will be discarded
core.gzip:compresslevel: The Gzip compresion level for Conan artifacts (default=9) Argument for the CMAKE_ANDROID_NDK Do not execute CMake.test() and Meson.test() when enabled Default compile jobs number -jX Ninja, Make, /MP VS (default: max CPUs)
tools.cmake.cmaketoolchain:generator: User defined CMake generator to use instead of default
tools.cmake.cmaketoolchain:find_package_prefer_config: Argument for the CMAKE_FIND_PACKAGE_PREFER_CONFIG
tools.cmake.cmaketoolchain:toolchain_file: Use other existing file rather than conan_toolchain.cmake one
tools.cmake.cmaketoolchain:user_toolchain: Inject existing user toolchain at the beginning of conan_toolchain.cmake
tools.cmake.cmaketoolchain:system_name: Define CMAKE_SYSTEM_NAME in CMakeToolchain
tools.cmake.cmaketoolchain:system_version: Define CMAKE_SYSTEM_VERSION in CMakeToolchain
tools.cmake.cmaketoolchain:system_processor: Define CMAKE_SYSTEM_PROCESSOR in CMakeToolchain Number of retries in case of failure when downloading Seconds to wait between download attempts
tools.gnu:make_program: Indicate path to make program Define Bazel config file Defines Bazel rc-path Verbosity level for MSBuild: 'Quiet', 'Minimal', 'Normal', 'Detailed', 'Diagnostic' Defines the IDE version when using the new msvc compiler Argument for the /m when running msvc to build parallel projects VS install path, to avoid auto-detect via vswhere, like C:/Program Files (x86)/Microsoft Visual Studio/2019/Community Suppress MSBuild code analysis for patterns Dictionary with MSBuild compiler options Defines the Intel oneAPI installation root path Custom arguments to be passed onto the|bat script from Intel oneAPI

Configuration from build_requires

From Conan 1.37, it is possible to define configuration in packages that are build_requires. For example, assuming there is a package that bundles the AndroidNDK, it could define the location of such NDK to the configuration as:

import os
from conans import ConanFile

class Pkg(ConanFile):
    name = "android_ndk"

    def package_info(self):
        self.conf_info[""] = os.path.join(self.package_folder, "ndk")

Note that this only propagates from the immediate, direct build_requires of a recipe.