-
Notifications
You must be signed in to change notification settings - Fork 362
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add documentation for qbs build helper and qbs toolchain #1978
Merged
Merged
Changes from all commits
Commits
Show all changes
22 commits
Select commit
Hold shift + click to select a range
7c7c2ec
Add documentation for qbs build helper
a8200c8
Add documentation for qbs toolchain
4e8d013
Add documentation for attributes of qbs build helper
badd931
Update reference/build_helpers/qbs.rst
danimtb d3c1771
Update reference/build_helpers/qbs.rst
danimtb c2251ad
Update creating_packages/toolchains/qbs.rst
danimtb c053b7d
Update creating_packages/toolchains/qbs.rst
danimtb 8f2a988
Update creating_packages/toolchains/qbs.rst
danimtb 50b4296
Update creating_packages/toolchains/qbs.rst
danimtb d6ff2bd
Update creating_packages/toolchains/qbs.rst
danimtb 638362d
Update creating_packages/toolchains/qbs.rst
danimtb e1131fa
Update creating_packages/toolchains/qbs.rst
danimtb a692e6e
Update creating_packages/toolchains/qbs.rst
danimtb 22b79d9
Update creating_packages/toolchains/qbs.rst
danimtb dd57116
Update creating_packages/toolchains/qbs.rst
danimtb e5d87d8
Update creating_packages/toolchains/qbs.rst
danimtb fdd2b28
Update creating_packages/toolchains/qbs.rst
danimtb 4fb7dda
Update creating_packages/toolchains/qbs.rst
danimtb 6fe4d47
Merge remote-tracking branch 'refs/remotes/psy-kai/develop' into develop
c27f411
Fixed copy & paste error
c91aba9
Removed project name to simplify line
b7ea033
Referenced rst files
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -117,3 +117,4 @@ Built-in toolchains | |
toolchains/make | ||
toolchains/meson | ||
toolchains/msbuild | ||
toolchains/qbs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
.. _conan-qbs-toolchain: | ||
|
||
QbsToolchain | ||
============== | ||
|
||
.. warning:: | ||
|
||
This is an **experimental** feature subject to breaking changes in future releases. | ||
|
||
|
||
The ``QbsToolchain`` can be used in the ``generate()`` method: | ||
|
||
|
||
.. code:: python | ||
|
||
from conans import ConanFile | ||
from conan.tools.qbs import QbsToolchain | ||
|
||
class App(ConanFile): | ||
settings = "os", "arch", "compiler", "build_type" | ||
requires = "hello/0.1" | ||
options = {"shared": [True, False]} | ||
default_options = {"shared": False} | ||
|
||
def generate(self): | ||
tc = QbsToolchain(self) | ||
tc.generate() | ||
|
||
|
||
The ``QbsToolchain`` will generate the following file during :command:`conan install` | ||
command (or before calling the ``build()`` method when the package is being | ||
built in the cache): *conan_toolchain.qbs*. This file will contain a qbs profile | ||
named *conan_toolchain_profile*. | ||
|
||
|
||
*conan_toolchain.qbs* will contain the definitions of all the Qbs properties | ||
related to the Conan options and settings for the current package, platform, | ||
etc. This includes the following: | ||
|
||
* Detection of compiler. | ||
|
||
* Based on the compiler set in environment variable ``CC``. | ||
|
||
* Uses detected system compiler based on Conan setting ``compiler`` if environment variable ``CC`` is not set. | ||
|
||
* Detection of compiler flags from environment (as defined at https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html): | ||
|
||
* ``ASFLAGS`` | ||
|
||
* ``CFLAGS`` | ||
|
||
* ``CPPFLAGS`` | ||
|
||
* ``CXXFLAGS`` | ||
|
||
* ``LDFLAGS`` | ||
|
||
* Detection of sysroot from environment. | ||
|
||
* Detection of ``build_type`` from Conan settings. | ||
|
||
* Detection of ``arch`` from Conan settings. | ||
|
||
* Detection of ``compiler.cxxstd`` from Conan settings. | ||
|
||
* Detection of ``fPIC`` based on the existence of such option in the recipe. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
.. _qbs_build_reference: | ||
|
||
Qbs | ||
=== | ||
|
||
If you are using **Qbs** as your build system, you can use the **Qbs** build helper. | ||
|
||
.. code-block:: python | ||
|
||
from conans import ConanFile, tools, Qbs | ||
import os | ||
|
||
class ConanFileToolsTest(ConanFile): | ||
... | ||
|
||
def build(self): | ||
qbs = Qbs(self) | ||
qbs.build() | ||
|
||
Constructor | ||
----------- | ||
|
||
.. code-block:: python | ||
|
||
class Qbs(object): | ||
|
||
def __init__(self, conanfile, project_file=None) | ||
|
||
Parameters: | ||
- **conanfile** (Required): Use ``self`` inside a ``conanfile.py``. | ||
- **project_file** (Optional, Defaulted to ``None``): Path to the root project file. | ||
|
||
Attributes | ||
---------- | ||
|
||
use_toolchain_profile | ||
+++++++++++++++++++++ | ||
|
||
**Defaulted to**: ``conan_toolchain_profile`` | ||
|
||
Specifies the qbs profile to build the project for. | ||
|
||
jobs | ||
++++ | ||
|
||
**Defaulted to**: ``tools.cpu_count()`` | ||
|
||
Specifies the number of concurrent build jobs. | ||
|
||
Methods | ||
------- | ||
|
||
add_configuration() | ||
+++++++++++++++++++ | ||
|
||
.. code-block:: python | ||
|
||
def add_configuration(self, name, values) | ||
|
||
Add a build configuration to use. | ||
|
||
Parameters: | ||
- **name** (Required): Specifies build configuration name. | ||
- **values** (Required): A dict of properties set for this build configuration. | ||
|
||
|
||
build() | ||
+++++++ | ||
|
||
.. code-block:: python | ||
|
||
def build(self, products=None) | ||
|
||
Build Qbs project. | ||
|
||
Parameters: | ||
- **products** (Optional, Defaulted to ``None``): Specifies a list of products to build. If ``None`` build all products which have the qbs property ``buildByDefault`` set to ``true``. | ||
|
||
|
||
build_all() | ||
+++++++++++ | ||
|
||
.. code-block:: python | ||
|
||
def build_all(self) | ||
|
||
Build all products of Qbs project, even products which set the qbs property ``buildByDefault`` set to ``false`` | ||
|
||
|
||
install() | ||
+++++++++ | ||
|
||
.. code-block:: python | ||
|
||
def install(self) | ||
|
||
Install products. | ||
|
||
|
||
Example | ||
------- | ||
|
||
A typical usage of the Qbs build helper, if you want to be able to both execute :command:`conan create` and also build your package for a | ||
library locally (in your user folder, not in the local cache), could be: | ||
|
||
.. code-block:: python | ||
|
||
from conans import ConanFile, Qbs | ||
|
||
class HelloConan(ConanFile): | ||
name = "hello" | ||
version = "0.1" | ||
settings = "os", "compiler", "build_type", "arch" | ||
generators = "qbs" | ||
exports_sources = "src/*", "*.qbs" | ||
no_copy_source = True | ||
requires = "zlib/1.2.11" | ||
|
||
def build(self): | ||
qbs = Qbs(self) | ||
qbs.add_configuration("default", { | ||
"project.conanBuildInfo", self.build_folder + "/conanbuildinfo.qbs" | ||
}) | ||
qbs.build() | ||
|
||
def package(self): | ||
self.copy("*.h", dst="include", src="src") | ||
self.copy("*.lib", dst="lib", keep_path=False) | ||
self.copy("*.dll", dst="bin", keep_path=False) | ||
self.copy("*.dylib*", dst="lib", keep_path=False) | ||
self.copy("*.so", dst="lib", keep_path=False) | ||
self.copy("*.a", dst="lib", keep_path=False) | ||
|
||
def package_info(self): | ||
self.cpp_info.libs = ["hello"] | ||
|
||
Note the ``qbs`` generator, which generates the *conanbuildinfo.qbs* file, to process | ||
dependencies information. Setting ``no_copy_source = True`` helps qbs to pick the right project file | ||
and not get confused by the generated files. | ||
|
||
The *hello.qbs* could be as simple as: | ||
|
||
.. code-block:: text | ||
|
||
Project { | ||
readonly property path conanBuildInfo | ||
|
||
references: conanBuildInfo | ||
|
||
DynamicLibrary { | ||
name: "hello" | ||
version: "0.1.0" | ||
files: "src/hello.cpp" | ||
cpp.cxxLanguageVersion: "c++11" | ||
|
||
Depends { name: "cpp" } | ||
Depends { name: "zlib" } | ||
} | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This import is wrong, the right one is
from conan.tools.qbs import Qbs
.