qiBuild documentation



  • Fix using qibuild make-host-tools when no project is specified

  • Implement qibuild make-host-tools --all

  • qibuild configure: fix setting flags containing =, such as qibuild configure -DCMAKE_CXX_FLAGS="-std=gnu++11"

  • qibuild configure: set QI_VIRTUALENV_PATH to the virtualenv path that has been created by qipy bootstrap. This is useful if you want to call Python code from C++.

  • Fix using qibuild clean in some corner cases

  • Restore build directory paths when using a build prefix.

    • Before 3.0: <prefix>/<build-dir>/project>
    • From 3.8 to 3.10: <prefix>/<project>/<build-dir>
    • In 3.11: <prefix>/<build-dir>/project>
  • Support setting arbitrary environment variables in ~/.config/qi/qibuild.xml. Here’s an example of a build configuration using clang

      <config name="clang">
          <var name="CC">clang</var>
          <var name="CXX">clang++</var>
  • qibuild package: add --standalone option. This generates a package containing the runtime components and all the runtime dependencies. Useful to redistribute compiled binaries.

  • qibuild package: add --breakpad option. This generates a symbols archive to be used with breakpad.

  • Using qibuild set-host-config twice with different configuration names lead to undefined behavior.

  • Fix using qibuild run in some corner cases.

  • Always generate a share/qi/path.conf during installation. (This is required by libqi)

  • When reading ~/.config/qi/qibuild.xml, prepend contents of <env path="..."/> after launching bat file.

  • Using qibuild set-host-config twice with different configuration names lead to undefined behavior.

  • qibuild config --wizard: fix infinite loop when asking for QtCreator application path


  • qidoc install: Add --clean to clean the destdir before installing doc projects
  • qidoc build: Forward --pdb option to Sphinx
  • Raise when dependencies are not found. We used to silently ignore missing dependencies.


  • qipkg deploy-package: now also accept a .pml path as argument.

    This means you can do

    qipkg deploy-package foo.pml --url user@host

    Instead of:

    qipkg make-package foo.pml
    qipkg deploy-package foo-0.1.pkg --url user@host


  • Fix creating virtualenv with access to global site-packages (regression since 3.10)


  • qisrc list: add --group argument to list projects belonging to the given group(s).
  • qisrc sync: fix crash in some corner cases
  • qisrc init: add --all option to ignore the default group and clone all the repositories defined in the manifest.
  • Remove the project options in qisrc snapshot. They were not used and prevented passing the snapshot path.
  • Warn when using qisrc foreach --group <group name> and the group is not currently in use
  • qisrc.git.Git.get_log: fix git log command
  • qisrc reset: add --ignore-groups to ignore groups defined in the snapshot, and use groups configured for the current worktree instead.


  • Fix test names generated by qitest collect
    • Old: basename_project
    • New: project.subfolder.basename
  • Implement qitest run --no-capture. (Useful when you want the output of the tests to be shown as they run, or when your test command requires a tty as stdout)
  • Fix using qitest run --coverage from a build worktree
  • Implement qitest run --last-failed to re-run previously failing tests
  • Implement qitest run --exclude to specify pattern of test name to exclude from the run
  • Implement qitest run --ignore-timeouts to ignore test timeouts set from CMake code.
  • qitest run --coverage: also generate HTML output (requires gcovr >= 3.2)
  • qitest run --coverage: add --coverage-output-dir option to set coverage output directory
  • qitest run: add --test-output-dir option to set test output directory (--root-output-directory is now deprecated)



  • Using qi_stage_lib(foo CUSTOM_CODE ..) did not generate installed foo-config.cmake correctly
  • qi_install: use USE_SOURCE_PERMISSIONS when installing directories
  • qi_swig_wrap_python: generate files in <build>/sdk/lib/python2.7/site-packages, the same way qi_create_python_ext does
  • qi_swig_wrap_python: export SWIG_MODULE_{target}_REAL_NAME to the parent scope
  • qibuild cmake modules: