# qiBuild documentation

# qiBuild: the build framework

## Basic concepts

qiBuild is a generic framework that helps for managing several projects and their dependencies.

It comes with a set of tools, which are listed below.

Every tool comes with a matching script (`qibuild`, `qisrc`, etc.), and must be used from a worktree.

Every project must be inside the worktree, and should have a `qiproject.xml` at its root. This is how the scripts can find the projects paths when they look for dependencies, for instance.

Read more about this in this section: Worktree and projects.

So, in order to be able to use qiBuild scripts, you should first create a worktree with `qibuild init`, and then register projects paths with `qisrc add`.

For instance:

    cd ~/work
    qibuild init
    mkdir my_first_proj
    # edit my_first_proj/qiproject.xml
    qisrc add my_first_proj

## qibuild: C++ compilation made easy

qibuild aims to make compilation of your sources easy. It manages dependencies between projects and supports cross-compilation.

By default qibuild uses libraries provided by your system, but you can also use qitoolchain to manage sets of pre-compiled packages (called toolchains) if you want. Cross-compilation is then just a matter of using a specific toolchain.

qibuild is truly cross-platform: it is tested on Linux, Mac and Windows. Being based on the well-known CMake build system, it allows you to use your existing tools such as gcc, Make, or Visual Studio.

The qibuild framework tries hard to stand out of your way: it remains close to standards, and will play nice with other build systems.

qibuild is composed of two parts:

- the qibuild CMake framework, that simplifies authoring CMakeLists.txt.
- the qibuild/qitoolchain command line tools, that helps build projects while taking dependencies into account and generate re-distributable binary packages.

### Is qibuild the only one build framework?

Of course not!

You can have a loot at

- qiBuild and CMake
- qiBuild and ROS build system
- qiBuild and qmake
- qiBuild and autotools

### Going further with qibuild

Read more about qibuild in the Building C++ projects with qibuild, or follow the qibuild Programming guide.

## qisrc: Managing git projects

The motivation for `qisrc` is to make it possible to work with several git repositories at the same time.

Notes:
  - Yes, we are aware that git submodules exists, but we wanted something more flexible and easier to use.
  - `qisrc` has more or less the same features than `repo`, (including `gerrit` support for code review), but, contrary to `repo`, it preserves a clean branch for you to work in and you can still use `git` normally.

### Tutorial

See Managing git projects with qisrc.

## qidoc: Building documentation

`qidoc` is a small tool that helps you write documentation in `sphinx` or in `doxygen`, spread across several projects, while making sure you can generate re-locatable HTML documentation.

### Tutorial

See Building documentation with qidoc.

## qilinguist: Translating projects

`qilinguist` provides tools to help internationalization of any kind of project, using `gettext` or `Qt Linguist` as backend.

### Tutorial

See Translating projects with qilinguist.

## qipy: qibuild and Python

`qipy` makes it possible to use Python extensions written in C/C++ with `qibuild` with pure Python libraries.

### Tutorial

See Using Python with qibuild projects.

## qipkg: Generate binary packages

`qipkg` lets you make packages the same way Choregraphe does, but from the command line, and also lets you embed code written in C++ or Python inside the package.

### Tutorial

See qipkg tutorial

Changelog CMake index Python index Index