- The open-source C/C++ package manager
Switch branches/tags
develop feature/editable-packages feature/fix_ssl_proxy feature/migration_release feature/refactor_rest_api feature/remove_scopes_and_install_folder_info feature/retry_downloads feature/revisions feature/wsl_env_vars master release/0.4.0 release/0.5.0 release/0.6 release/0.7.0 release/0.7.1 release/0.7.2 release/0.7.3 release/0.7.4 release/0.8.0 release/0.8.1 release/0.8.2 release/0.8.3 release/0.8.4 release/0.8.5 release/0.8.6 release/0.9.0 release/0.9.1 release/0.9.2 release/0.9.3 release/0.10.0 release/0.10.1 release/0.11.0 release/0.11.1 release/0.12.0 release/0.13.0 release/0.13.3 release/0.14.0 release/0.14.1 release/0.15.0 release/0.16.0 release/0.16.1 release/0.17.0 release/0.17.1 release/0.17.2 release/0.18.0 release/0.18.1 release/0.19.0 release/0.19.1 release/0.19.2 release/0.19.3 release/0.20.0 release/0.20.1 release/0.20.2 release/0.20.3 release/0.21.0 release/0.21.1 release/0.21.2 release/0.22.0 release/0.22.1 release/0.22.2 release/0.22.3 release/0.23 release/0.23.1 release/0.23.2 release/0.24.0 release/0.25.0 release/0.25.1 release/0.26.0 release/0.26.1 release/0.26.2 release/0.27.0 release/0.27.1 release/0.28.0 release/0.28.1 release/0.29.1 release/0.30.0 release/0.30.1 release/0.30.2 release/0.30.3 release/1.0.0-beta.1 release/1.0.0-beta.2 release/1.0.0-beta.3 release/1.0.0-beta.4 release/1.0.0-beta.5 release/1.0.0 release/1.0.1 release/1.0.2 release/1.0.3 release/1.0.4 release/1.1.0 release/1.1.1 release/1.2.0 release/1.2.1 release/1.2.2 release/1.2.3 release/1.3.0 release/1.3.1 release/1.3.2 release/1.3.3 release/1.4.0 release/1.4.1 release/1.4.2 release/1.4.3 release/1.4.4 release/1.4.5 release/1.5.0 release/1.5.1 release/1.5.2 release/1.6.0 release/1.6.1 release/1.7.0 release/1.7.1 release/1.7.2 release/1.7.3 release/1.7.4 release/1.8.0 release/1.8.1 release/1.8.2 release/1.8.3 release/1.8.4 release/1.8.5 release/1.9.0 release/1.9.1 release/1.9.2 revert-2404-feature/2357 revert-3114-feature/scm_submodule
Nothing to show
Clone or download
memsharded Merge pull request #4128 from lasote/feature/better_debug_traces
Better debug traces and server printing config at startup
Latest commit ee1c1ab Dec 14, 2018



A distributed, open-source, C/C++ package manager.

master develop
Build Status Master Build Status Develop
Coverage master Coverage develop Coverage graph
Master coverage Develop coverage Conan develop coverage


From binaries

We have installers for most platforms here but you can run conan from sources if you want.

From pip

Conan is compatible with Python 2 and Python 3.

  • Install pip following pip docs.

  • Install conan:

    $ pip install conan

You can also use repository to install development (non-stable) Conan versions:

$ pip install --index-url conan

From Homebrew (OSx)

  • Install Homebrew following brew homepage.

    $ brew update
    $ brew install conan

From source

You can run conan client and server in Windows, MacOS, and Linux.

  • Install pip following pip docs.

  • Clone conan repository:

    $ git clone
  • Install in editable mode

    $ cd conan && sudo pip install -e .

    If you are in Windows, using sudo is not required.

  • You are ready, try to run conan:

    $ conan --help
    Consumer commands
      install    Installs the requirements specified in a conanfile (.py or .txt).
      config     Manages configuration. Edits the conan.conf or installs config files.
      get        Gets a file or list a directory of a given reference or package.
      info       Gets information about the dependency graph of a recipe.
      search     Searches package recipes and binaries in the local cache or in a remote.
    Creator commands
      new        Creates a new package recipe template with a ''.
      create     Builds a binary package for recipe ( located in current dir.
      upload     Uploads a recipe and binary packages to a remote.
      export     Copies the recipe ( & associated files) to your local cache.
      export-pkg Exports a recipe & creates a package with given files calling 'package'.
      test       Test a package, consuming it with a conanfile recipe with a test() method.
    Package development commands
      source     Calls your local 'source()' method.
      build      Calls your local 'build()' method.
      package    Calls your local 'package()' method.
    Misc commands
      profile    Lists profiles in the '.conan/profiles' folder, or shows profile details.
      remote     Manages the remote list and the package recipes associated to a remote.
      user       Authenticates against a remote with user/pass, caching the auth token.
      imports    Calls your local or conanfile.txt 'imports' method.
      copy       Copies conan recipes and packages to another user/channel.
      remove     Removes packages or binaries matching pattern from local cache or remote.
      alias      Creates and exports an 'alias recipe'.
      download   Downloads recipe and binaries to the local cache, without using settings.
    Conan commands. Type "conan <command> -h" for help

Running the tests

Install python requirements

$ pip install -r conans/requirements.txt
$ pip install -r conans/requirements_server.txt
$ pip install -r conans/requirements_dev.txt

Only in OSX:

$ pip install -r conans/requirements_osx.txt # You can omit this one if not running OSX

If you are not Windows and you are not using a python virtual environment, you will need to run these commands using sudo.

Before you can run the tests, you need to set a few environment variables first.


On Windows it would be (while being in the conan root directory):


Ensure that your cmake has version 2.8 or later. You can see the version with the following command:

$ cmake --version

The appropriate values of CONAN_COMPILER and CONAN_COMPILER_VERSION depend on your operating system and your requirements.

These should work for the GCC from build-essential on Ubuntu 14.04:

$ export CONAN_COMPILER=gcc

These should work for OS X:

$ export CONAN_COMPILER=clang

Finally, there are some tests that use conan to package Go-lang libraries, so you might need to install go-lang in your computer and add it to the path.

You can run the actual tests like this:

$ nosetests .

There are a couple of test attributes defined, as slow, or golang that you can use to filter the tests, and do not execute them:

$ nosetests . -a !golang

A few minutes later it should print OK:

Ran 146 tests in 50.993s


To run specific tests, you can specify the test name too, something like:

$ nosetests conans.test.command.config_install_test:ConfigInstallTest.install_file_test --nocapture

The --nocapture argument can be useful to see some output that otherwise is captured by nosetests.