[odb-users] ODB compiler does not check up-to-date

Boris Kolpackov boris at codesynthesis.com
Mon Jan 28 08:09:02 EST 2013


Hi Almog,

Almog Cohen <almogco at gmail.com> writes:

> it seems that when using VS2010 -> Custom build scripts for compiling
> using the ODB compiler, the compiler does not check if the files are
> up-to-date before compiling and just builds them all. this significantly
> extends build time in big projects.

Hm, this is strange. We don't observe this behavior in our examples
and tests. To verify, I tried the following steps:

1. Open the examples solution found in the odb-examples package.

2. Build the 'hello' example. Since this is the clean build, as
   expected, everything is compiled (i.e., the ODB compiler is
   invoked on hello.hxx, etc).

3. Build the example again. This time, again as expected, nothing
   is compiled (i.e., no ODB compiler execution) and VC++ simply
   says that everything is up-to-date.

4. Modify hello.hxx and build the example again. This time, again
   as expected, ODB compiler is invoked on hello.hxx.

So for me everything works as expected. Can you try the examples
and see if it works for you?

Note also that it is not the ODB compiler that checks whether
everything is up to date. Rather, it is the VC++ IDE. And the
way it decides whether it needs to run the custom build step
is by comparing the modification dates of the files mentioned
in the "Outputs" fields of the Custom Build dialog to that of
the header file.

So if you do not specify the correct output files, you will most
likely get constant rebuilds. Specifically, for the hello.hxx
header this field should contain (provided you haven't changed
the file suffixes):

hello-odb.hxx;hello-odb.ixx;hello-odb.cxx

That is, the generated file names are separated with the
semicolon.

Boris



More information about the odb-users mailing list