# 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.