conan config¶
管理 Conan 主目录中的 Conan 配置。
conan config home¶
$ conan config home -h
usage: conan config home [-h] [-v [V]] [-cc CORE_CONF]
Show the Conan home folder.
options:
-h, --help show this help message and exit
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
conan config home
命令返回 Conan 主文件夹的路径。
$ conan config home
/home/user/.conan2
conan config install¶
$ conan config install -h
usage: conan config install [-h] [-v [V]] [-cc CORE_CONF]
[--verify-ssl [VERIFY_SSL] | --insecure]
[-t {git,dir,file,url}] [-a ARGS]
[-sf SOURCE_FOLDER] [-tf TARGET_FOLDER]
item
Install the configuration (remotes, profiles, conf), from git, http or a
folder, into the Conan home folder.
positional arguments:
item git repository, local file or folder or zip file
(local or http) where the configuration is stored
options:
-h, --help show this help message and exit
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
--verify-ssl [VERIFY_SSL]
Verify SSL connection when downloading file
--insecure Allow insecure server connections when using SSL.
Equivalent to --verify-ssl=False
-t {git,dir,file,url}, --type {git,dir,file,url}
Type of remote config
-a ARGS, --args ARGS String with extra arguments for "git clone"
-sf SOURCE_FOLDER, --source-folder SOURCE_FOLDER
Install files only from a source subfolder from the
specified origin
-tf TARGET_FOLDER, --target-folder TARGET_FOLDER
Install to that path in the conan cache
conan config install
命令旨在在当前主目录中安装通用的共享 Conan 配置,例如 remotes
、profiles
、settings
、hooks
、extensions
等的定义。
该命令可以将以下任何一项用作源
指向包含配置文件的 zip 存档的 URL
包含文件的 git 仓库
本地文件夹
仅一个文件
当前 Conan 主目录中的文件将被安装源中的文件替换。所有配置文件都可以通过这种方式共享和安装
remotes.json
用于定义远程仓库任何
profiles
子文件夹内的自定义配置文件自定义
settings.yml
自定义
global.conf
所有扩展,包括插件、钩子。
自定义用户命令。
此命令读取 .conanignore
文件,如果存在,则会筛选哪些文件和文件夹被复制到用户的 Conan 主文件夹中。此文件使用 fnmatch 模式来匹配文件夹内容,排除那些与配置安装匹配的条目。有关此类文件的示例,请参阅 conan-io/command-extensions 的 .conanignore。您可以使用 !
否定语法强制复制某些文件
# Ignore all files
*
# But copy the file named "settings.yml"
!settings.yml
示例:
从 URL 安装配置
$ conan config install http://url/to/some/config.zip
从 URL 安装配置,但仅获取 zip 文件内 *origin* 文件夹中的文件,并将它们放入本地缓存中的 *target* 文件夹中
$ conan config install http://url/to/some/config.zip -sf=origin -tf=target
从 2 个不同 URL 的 2 个不同 zip 文件安装配置,每个文件使用不同的源文件夹和目标文件夹,然后全部更新
$ conan config install http://url/to/some/config.zip -sf=origin -tf=target $ conan config install http://url/to/some/config.zip -sf=origin2 -tf=target2 $ conan config install http://other/url/to/other.zip -sf=hooks -tf=hooks
从带有子模块的 Git 仓库安装配置
$ conan config install http://github.com/user/conan_config/.git --args="--recursive"
您还可以使用 --type git 强制 git 下载(如果它不是从 URL 自动推断出来的)
$ conan config install http://github.com/user/conan_config/.git --type git
从 URL 安装,跳过 SSL 验证
$ conan config install http://url/to/some/config.zip --verify-ssl=False
这将禁用证书的 SSL 检查。
从本地路径安装特定文件
$ conan config install my_settings/settings.yml
从本地路径安装配置
$ conan config install /path/to/some/config.zip
conan config install-pkg¶
警告
此功能是实验性的,可能会有重大更改。有关更多信息,请参阅Conan 稳定性部分。
$ conan config install-pkg -h
usage: conan config install-pkg [-h] [-v [V]] [-cc CORE_CONF] [-l LOCKFILE]
[--lockfile-partial]
[--lockfile-out LOCKFILE_OUT] [-f] [--url URL]
[-pr PROFILE] [-s SETTINGS] [-o OPTIONS]
item
(Experimental) Install the configuration (remotes, profiles, conf), from a
Conan package
positional arguments:
item Conan require
options:
-h, --help show this help message and exit
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
-l LOCKFILE, --lockfile LOCKFILE
Path to a lockfile. Use --lockfile="" to avoid
automatic use of existing 'conan.lock' file
--lockfile-partial Do not raise an error if some dependency is not found
in lockfile
--lockfile-out LOCKFILE_OUT
Filename of the updated lockfile
-f, --force Force the re-installation of configuration
--url URL (Experimental) Provide Conan repository URL (for first
install without remotes)
-pr PROFILE, --profile PROFILE
Profile to install config
-s SETTINGS, --settings SETTINGS
Settings to install config
-o OPTIONS, --options OPTIONS
Options to install config
此命令允许从 Conan 服务器中存储的 Conan 包安装配置。
包含配置的包遵循一些特殊规则
它们必须定义
package_type = "configuration"
配置文件必须打包在最终的“二进制”包中,遵循与其他
conan config install
情况相同的布局。它们不能用作其他包的
requires
,因为这会导致鸡和蛋的问题。它们不能包含对其他包的
requires
配置包使用
conan create
和conan export-pkg
创建,与其他包相同,并使用conan upload
上传到服务器
要从 Conan 配置包安装配置,可以使用以下方法
使用
--lockfile-out
生成一个锁文件。此锁文件可以传递给conan config install-pkg --lockfile
(如果命名为conan.lock
并在当前目录中找到,它将自动加载),以保证将来使用完全相同的版本。可以使用版本范围
conan config install-pkg "myconf/[>=1.0 <2]"
是正确的,它将安装该范围内的最新版本。conan config install-pkg
始终在服务器中查找最新版本或修订版。如果从服务器下载并安装了相同的版本和修订版,则
conan config install-pkg
将不会执行任何操作,除非使用--force
,在这种情况下,配置将被覆盖。
还可以通过激活 core.package_id:config_mode
conf(这也是实验性的)为任何可用的模式(例如 minor_mode
)来使配置的版本影响所有包的 package_id
并成为二进制模型的一部分。
由于 conan config install-pkg
命令从 Conan 远程服务器下载包,因此它可以从已经存在的远程仓库下载,也可以通过直接指定仓库 URL 从 Conan 远程仓库下载
$ conan config install-pkg myconf/version --url=<url/conan/remote/repo>
Conan 配置包还可以根据配置文件、设置和选项进行参数化。例如,如果某些组织希望为 Windows 和其他平台以略微不同的方式管理其配置,他们可以执行以下操作
import os
from conan import ConanFile
from conan.tools.files import copy
class Conf(ConanFile):
name = "myconf"
version = "0.1"
settings = "os"
package_type = "configuration"
def package(self):
f = "win" if self.settings.os == "Windows" else "nix"
copy(self, "*.conf", src=os.path.join(self.build_folder, f), dst=self.package_folder)
如果它们的布局对于不同的平台有不同的 global.conf
,例如
conanfile.py
win/global.conf
nix/global.conf
他们可以将配置包创建并上传为
$ conan export-pkg . -s os=Windows
$ conan export-pkg . -s os=Linux
$ conan upload "*" -r=remote -c
然后,开发人员可以执行以下操作
$ conan config install-pkg "myconf/[*]" -s os=Linux
# or even implicitly, if they default build profile defines os=Linux
$ conan config install-pkg "myconf/[*]"
他们将获得适合其平台的正确配置。
conan config list¶
$ conan config list -h
usage: conan config list [-h] [-f FORMAT] [-v [V]] [-cc CORE_CONF] [pattern]
Show all the Conan available configurations: core and tools.
positional arguments:
pattern Filter configuration items that matches this pattern
options:
-h, --help show this help message and exit
-f FORMAT, --format FORMAT
Select the output format: json
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
显示所有 Conan 内置配置。共有 2 个组
core.xxxx
: 这些只能在global.conf
中定义,并且由 Conan 内部使用tools.xxxx
: 这些可以在global.conf
和配置文件中定义,并且将由配方和配方中使用的工具(如CMakeToolchain
)使用
$ conan config list
core.cache:storage_path: Absolute path where the packages and database are stored
core.download:download_cache: Define path to a file download cache
core.download:parallel: Number of concurrent threads to download packages
core.download:retry: Number of retries in case of failure when downloading from Conan server
core.download:retry_wait: Seconds to wait between download attempts from Conan server
core.gzip:compresslevel: The Gzip compression level for Conan artifacts (default=9)
core.net.http:cacert_path: Path containing a custom Cacert file
core.net.http:clean_system_proxy: If defined, the proxies system env-vars will be discarded
core.net.http:client_cert: Path or tuple of files containing a client cert (and key)
core.net.http:max_retries: Maximum number of connection retries (requests library)
core.net.http:no_proxy_match: List of urls to skip from proxies configuration
core.net.http:proxies: Dictionary containing the proxy configuration
core.net.http:timeout: Number of seconds without response to timeout (requests library)
core.package_id:config_mode: How the 'config_version' affects binaries. By default 'None'
core.package_id:default_build_mode: By default, 'None'
core.package_id:default_embed_mode: By default, 'full_mode'
core.package_id:default_non_embed_mode: By default, 'minor_mode'
core.package_id:default_python_mode: By default, 'minor_mode'
core.package_id:default_unknown_mode: By default, 'semver_mode'
core.scm:excluded: List of excluded patterns for builtin git dirty checks
core.scm:local_url: By default allows to store local folders as remote url, but not upload them. Use 'allow' for allowing upload and 'block' to completely forbid it
core.sources:download_cache: Folder to store the sources backup
core.sources:download_urls: List of URLs to download backup sources from
core.sources:exclude_urls: URLs which will not be backed up
core.sources:upload_url: Remote URL to upload backup sources to
core.upload:parallel: Number of concurrent threads to upload packages
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
core.version_ranges:resolve_prereleases: Whether version ranges can resolve to pre-releases or not
core:allow_uppercase_pkg_names: Temporarily (will be removed in 2.X) allow uppercase names
core:default_build_profile: Defines the default build profile ('default' by default)
core:default_profile: Defines the default host profile ('default' by default)
core:non_interactive: Disable interactive user input, raises error if input necessary
core:required_conan_version: Raise if current version does not match the defined range.
core:skip_warnings: Do not show warnings matching any of the patterns in this list. Current warning tags are 'network', 'deprecated', 'experimental'
core:warnings_as_errors: Treat warnings matching any of the patterns in this list as errors and then raise an exception. Current warning tags are 'network', 'deprecated'
tools.android:cmake_legacy_toolchain: Define to explicitly pass ANDROID_USE_LEGACY_TOOLCHAIN_FILE in CMake toolchain
tools.android:ndk_path: Argument for the CMAKE_ANDROID_NDK
tools.apple:enable_arc: (boolean) Enable/Disable ARC Apple Clang flags
tools.apple:enable_bitcode: (boolean) Enable/Disable Bitcode Apple Clang flags
tools.apple:enable_visibility: (boolean) Enable/Disable Visibility Apple Clang flags
tools.apple:sdk_path: Path to the SDK to be used
tools.build.cross_building:can_run: (boolean) Indicates whether is possible to run a non-native app on the same architecture. It's used by 'can_run' tool
tools.build.cross_building:cross_build: (boolean) Decides whether cross-building or not regardless of arch/OS settings. Used by 'cross_building' tool
tools.build:cflags: List of extra C flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain
tools.build:compiler_executables: Defines a Python dict-like with the compilers path to be used. Allowed keys {'c', 'cpp', 'cuda', 'objc', 'objcxx', 'rc', 'fortran', 'asm', 'hip', 'ispc'}
tools.build:cxxflags: List of extra CXX flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain
tools.build:defines: List of extra definition flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain
tools.build:download_source: Force download of sources for every package
tools.build:exelinkflags: List of extra flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain
tools.build:jobs: Default compile jobs number -jX Ninja, Make, /MP VS (default: max CPUs)
tools.build:linker_scripts: List of linker script files to pass to the linker used by different toolchains like CMakeToolchain, AutotoolsToolchain, and MesonToolchain
tools.build:sharedlinkflags: List of extra flags used by different toolchains like CMakeToolchain, AutotoolsToolchain and MesonToolchain
tools.build:skip_test: Do not execute CMake.test() and Meson.test() when enabled
tools.build:sysroot: Pass the --sysroot=<tools.build:sysroot> flag if available. (None by default)
tools.build:verbosity: Verbosity of build systems if set. Possible values are 'quiet' and 'verbose'
tools.cmake.cmake_layout:build_folder: (Experimental) Allow configuring the base folder of the build for local builds
tools.cmake.cmake_layout:build_folder_vars: Settings and Options that will produce a different build folder and different CMake presets names
tools.cmake.cmake_layout:test_folder: (Experimental) Allow configuring the base folder of the build for test_package
tools.cmake.cmakedeps:new: Use the new CMakeDeps generator
tools.cmake.cmaketoolchain:enabled_blocks: Select the specific blocks to use in the conan_toolchain.cmake
tools.cmake.cmaketoolchain:extra_variables: Dictionary with variables to be injected in CMakeToolchain (potential override of CMakeToolchain defined variables)
tools.cmake.cmaketoolchain:find_package_prefer_config: Argument for the CMAKE_FIND_PACKAGE_PREFER_CONFIG
tools.cmake.cmaketoolchain:generator: User defined CMake generator to use instead of default
tools.cmake.cmaketoolchain:presets_environment: String to define wether to add or not the environment section to the CMake presets. Empty by default, will generate the environment section in CMakePresets. Can take values: 'disabled'.
tools.cmake.cmaketoolchain:system_name: Define CMAKE_SYSTEM_NAME in CMakeToolchain
tools.cmake.cmaketoolchain:system_processor: Define CMAKE_SYSTEM_PROCESSOR in CMakeToolchain
tools.cmake.cmaketoolchain:system_version: Define CMAKE_SYSTEM_VERSION in CMakeToolchain
tools.cmake.cmaketoolchain:toolchain_file: Use other existing file rather than conan_toolchain.cmake one
tools.cmake.cmaketoolchain:toolset_arch: Toolset architecture to be used as part of CMAKE_GENERATOR_TOOLSET in CMakeToolchain
tools.cmake.cmaketoolchain:toolset_cuda: (Experimental) Path to a CUDA toolset to use, or version if installed at the system level
tools.cmake.cmaketoolchain:user_toolchain: Inject existing user toolchains at the beginning of conan_toolchain.cmake
tools.cmake:cmake_program: Path to CMake executable
tools.cmake:install_strip: Add --strip to cmake.install()
tools.compilation:verbosity: Verbosity of compilation tools if set. Possible values are 'quiet' and 'verbose'
tools.deployer:symlinks: Set to False to disable deployers copying symlinks
tools.env.virtualenv:powershell: If specified, it generates PowerShell launchers (.ps1). Use this configuration setting the PowerShell executable you want to use (e.g., 'powershell.exe' or 'pwsh'). Setting it to True or False is deprecated as of Conan 2.11.0.
tools.files.download:retry: Number of retries in case of failure when downloading
tools.files.download:retry_wait: Seconds to wait between download attempts
tools.files.download:verify: If set, overrides recipes on whether to perform SSL verification for their downloaded files. Only recommended to be set while testing
tools.files.unzip:filter: Define tar extraction filter: 'fully_trusted', 'tar', 'data'
tools.gnu:build_triplet: Custom build triplet to pass to Autotools scripts
tools.gnu:define_libcxx11_abi: Force definition of GLIBCXX_USE_CXX11_ABI=1 for libstdc++11
tools.gnu:host_triplet: Custom host triplet to pass to Autotools scripts
tools.gnu:make_program: Indicate path to make program
tools.gnu:pkg_config: Path to pkg-config executable used by PkgConfig build helper
tools.google.bazel:bazelrc_path: List of paths to bazelrc files to be used as 'bazel --bazelrc=rcpath1 ... build'
tools.google.bazel:configs: List of Bazel configurations to be used as 'bazel build --config=config1 ...'
tools.graph:skip_binaries: Allow the graph to skip binaries not needed in the current configuration (True by default)
tools.graph:skip_build: (Experimental) Do not expand build/tool_requires
tools.graph:skip_test: (Experimental) Do not expand test_requires. If building it might need 'tools.build:skip_test=True'
tools.graph:vendor: (Experimental) If 'build', enables the computation of dependencies of vendoring packages to build them
tools.info.package_id:confs: List of existing configuration to be part of the package ID
tools.intel:installation_path: Defines the Intel oneAPI installation root path
tools.intel:setvars_args: Custom arguments to be passed onto the setvars.sh|bat script from Intel oneAPI
tools.meson.mesontoolchain:backend: Any Meson backend: ninja, vs, vs2010, vs2012, vs2013, vs2015, vs2017, vs2019, xcode
tools.meson.mesontoolchain:extra_machine_files: List of paths for any additional native/cross file references to be appended to the existing Conan ones
tools.microsoft.bash:active: If Conan is already running inside bash terminal in Windows
tools.microsoft.bash:path: The path to the shell to run when conanfile.win_bash==True
tools.microsoft.bash:subsystem: The subsystem to be used when conanfile.win_bash==True. Possible values: msys2, msys, cygwin, wsl, sfu
tools.microsoft.msbuild:installation_path: VS install path, to avoid auto-detect via vswhere, like C:/Program Files (x86)/Microsoft Visual Studio/2019/Community. Use empty string to disable
tools.microsoft.msbuild:max_cpu_count: Argument for the /m when running msvc to build parallel projects
tools.microsoft.msbuild:vs_version: Defines the IDE version (15, 16, 17) when using the msvc compiler. Necessary if compiler.version specifies a toolset that is not the IDE default
tools.microsoft.msbuilddeps:exclude_code_analysis: Suppress MSBuild code analysis for patterns
tools.microsoft.msbuildtoolchain:compile_options: Dictionary with MSBuild compiler options
tools.microsoft:msvc_update: Force the specific update irrespective of compiler.update (CMakeToolchain and VCVars)
tools.microsoft:winsdk_version: Use this winsdk_version in vcvars
tools.system.package_manager:mode: Mode for package_manager tools: 'check', 'report', 'report-installed' or 'install'
tools.system.package_manager:sudo: Use 'sudo' when invoking the package manager tools in Linux (False by default)
tools.system.package_manager:sudo_askpass: Use the '-A' argument if using sudo in Linux to invoke the system package manager (False by default)
tools.system.package_manager:tool: Default package manager tool: 'apk', 'apt-get', 'yum', 'dnf', 'brew', 'pacman', 'choco', 'zypper', 'pkg' or 'pkgutil'
可以仅列出与给定模式匹配的配置,例如
$ conan config list proxy
core.net.http:clean_system_proxy: If defined, the proxies system env-vars will be discarded
core.net.http:no_proxy_match: List of urls to skip from proxies configuration
core.net.http:proxies: Dictionary containing the proxy configuration
另请参阅
这些配置可以在
global.conf
、配置文件和命令行中定义,请参阅 Conan 配置文件
conan config show¶
$ conan config show -h
usage: conan config show [-h] [-f FORMAT] [-v [V]] [-cc CORE_CONF] pattern
Get the value of the specified conf
positional arguments:
pattern Conf item(s) pattern for which to query their value
options:
-h, --help show this help message and exit
-f FORMAT, --format FORMAT
Select the output format: json
-v [V] Level of detail of the output. Valid options from less
verbose to more verbose: -vquiet, -verror, -vwarning,
-vnotice, -vstatus, -v or -vverbose, -vv or -vdebug,
-vvv or -vtrace
-cc CORE_CONF, --core-conf CORE_CONF
Define core configuration, overwriting global.conf
values. E.g.: -cc core:non_interactive=True
显示与给定模式匹配的 conf 项的值。
对于由以下内容组成的 *global.conf*
tools.build:jobs=42
tools.files.download:retry_wait=10
tools.files.download:retry=7
core.net.http:timeout=30
core.net.http:max_retries=5
zlib*/:tools.files.download:retry_wait=100
zlib*/:tools.files.download:retry=5
您可以获取所有值
$ conan config show "*"
core.net.http:max_retries: 5
core.net.http:timeout: 30
tools.files.download:retry: 7
tools.files.download:retry_wait: 10
tools.build:jobs: 42
zlib*/:tools.files.download:retry: 5
zlib*/:tools.files.download:retry_wait: 100
或者仅获取那些引用 tools.files
部分的值
$ conan config show "*tools.files*"
tools.files.download:retry: 7
tools.files.download:retry_wait: 10
zlib*/:tools.files.download:retry: 5
zlib*/:tools.files.download:retry_wait: 100
请注意模式中的第一个 *
。这将匹配所有包模式。删除它将使命令仅显示全局配置
$ conan config show "tools.files*"
tools.files.download:retry: 7
tools.files.download:retry_wait: 10