conan

Module provider for the Conan package manager. More...

Since: Qt 2.4

Properties

Detailed Description

This module provider allows integration with the Conan package manager.

Prerequisites

In order to use this provider, you will need Conan version 2.5.0 or higher. Earlier versions do not have the QbsDeps generator.

Example

For details on how to setup a project to use with Conan, see the l{https://github.com/qbs/qbs/blob/master/examples/protobuf/addressbook_conan}{addressbook_conan} folder in examples. First, you will need a conanfile as shown below.

 [requires]
 protobuf/3.21.12
 [tool_requires]
 protobuf/3.21.12
 [generators]
 QbsDeps

We use the text version for simplicity, but you can use the Python conanfile as well.

Next, set the qbsModuleProviders property to "conan":

 import qbs.Host

 CppApplication {
     consoleApplication: true
     condition: protobuf.cpp.present && qbs.targetPlatform === Host.platform()

     Depends { name: "cpp" }
     cpp.minimumMacosVersion: "11.0"

     Depends { name: "protobuf.cpp"; required: false }

     files: [
         "../shared/addressbook.proto",
         "main.cpp",
     ]
     qbsModuleProviders: "conan"
 }

Install Conan dependencies and run the QbsDeps generator from the addressbook_conan dir:

 $ conan install . -g=QbsDeps --output-folder=build --build missing

This will create the ./build/qbs-deps directory contaning files for provider. Now you can pass the conan install directory to the provider:

 $ qbs moduleProviders.conan.installDirectory:build

You should see the following output if everything is correct:

 Build graph does not yet exist for configuration 'default'. Starting from scratch.
 Resolving project for configuration default
 Setting up Conan module 'protobuflib'
 Setting up Conan module 'zlib'
 ...
 Build done for configuration default.

Property Documentation

installDirectory : string

The path to the conan install installDirectory.

Qbs searches for files created by the QbsDeps generator in that directory.

If not set, the provider will not be run.

Default: undefined