<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
<span class="size" style="font-size: 13px"><span class="size" style="font-size: 10pt">Hi,</span></span><div><span class="size" style="font-size: 13px"><span class="size" style="font-size: 10pt"><br /></span></span></div><div><span class="size" style="font-size: 13px"><span class="size" style="font-size: 10pt">I would like to use build2 for building a project whose structure is slightly different from the one introduced in the cppcon talk given by Boris in 2016. After
 simplification, the project tree would look like the following:<br /> <br /> project<br /> ├── bld<br /> │   ├── cfg_A<br /> │   │   └── build<br /> │   │       ├── bootstrap<br /> │   │       │   └── src-root.build<br /> │   │       └── config.build<br /> │   └── cfg_B<br /> │       └── build<br /> │           ├── bootstrap<br /> │           │   └── src-root.build<br /> │           └── config.build<br /> └── src<br />     ├── build<br />     │   ├── bootstrap.build<br />     │   └── root.build<br />     ├── buildfile<br />     ├── cde<br />     │   ├── cde_XXX.cpp<br />     │   ├── cde_XXX.hpp<br />     │   ├── cde_XXX.t.cpp<br />     │   ├── cde_YYY.cpp<br />     │   ├── cde_YYY.hpp<br />     │   └── cde_YYY.t.cpp<br />     └── efg<br />         ├── efg_ZZZ.cpp<br />         ├── efg_ZZZ.hpp<br />         └── efg_ZZZ.t.cpp<br /> <br /> The code under the src directory is organized in "components" and each 
"component" is made up of three files (this is rather common I guess):<br /> - One .hpp file which contains function/struct/class declarations and inline/template functions implementations.<br /> - One .cpp file which contains the implementation of the non inline/template functions declared in the associated .hpp file.<br /> - One .t.cpp file which contains the test driver with a function for the
 function/struct/class declared in the associated .hpp file. In 
particular, there is a "int main(...)" function in this file. When 
running the test driver binary, errors are reported on
the standard output (if any) and exit code indicates the status (0 if no
 error, 1 otherwise).<br /> <br /> The description is probably oversimplified but that would already be nice
 to get the following tasks to work without having to modify the 
buildfile for each newly added component.<br /> - build the new/outdated object files (XXX.o and XXX.t.o)<br /> - build the new/outdated/failed test driver binary (XXX.t), run them and report failures if any.<br /> <br /> Do you think that build2 could help to achieve that? If so, could you
 provide some guidelines on how to set it up for that purpose?<br /> <br /> <br /> Best</span></span><br /></div>  </body>
</html>