# qiBuild documentation

# Parsing toolchain feeds

Let’s assume you have a cross-toolchain updated to http://example.com/packages/foo-ctc.tar.gz, a binary package in http://example.com/packages/bar.tar.gz, and an XML feed looking like:

    <toolchain>
      <package
        name="foo-ctc"
        url="http://example.com/packages/foo-ctc.tar.gz"
        toolchain_file="cross-config.cmake"
      />
      <package
        name="bar"
        url="http://example.com/packages/bar.tar.gz"
      />

accessible in `http://example.com/feeds/cross.xml`

And you run

    $ qitoolchain create cross-foo http://example.com/feeds/cross.xml

See `qitoolchain.feed` for how XML parsing is done.

After every package has been parsed and added to the toolchain, it is just a matter of `toolchain.update_toolchain` so that the toolchain file is regenerated.

The toolchain file will then look like:

    # Autogenerted file
    include("/path/to/a/ctc/cross-config.cmake")
    list(INSERT CMAKE_FIND_ROOT_PATH 0 "/path/to/a/ctc")
    list(INSERT CMAKE_FIND_ROOT_PATH 0 "/path/to/a/package")

and `cross-foo` will be added to the name of the known toolchains.

Then, when using

    $ qibuild configure -c cross-foo my_project

A `qibuild.toc.Toc` object will be created, containing a `qitoolchain.toolchain.Toolchain` because `cross-foo` is a known name.

Then, a build directory name `build-cross-foo` will be created, and cmake will be called, as if you had type:

    $ cd ~/src/my_project/
    $ mkdir build-cross-foo
    $ cmake -DCMAKE_TOOLCHAIN_FILE=~/.cache/qi/toolchains/cross-foo.cmake ..

And everything will just work:

You will go through the `cross-config.cmake`, so the compiler to use will be properly set, and you will have a entry in `CMAKE_FIND_ROOT_PATH` to where the `bar` package has been extracted, so finding `bar` libraries from the `bar` package will also work.

Changelog CMake index Python index Index