[CMake] change source which does not trigger rebuild ?
Matthew Woehlke
matthew.woehlke at kitware.com
Fri Mar 22 15:57:25 EDT 2013
On 2013-03-13 09:22, Martin Koller wrote:
> I'd like to solve the following problem, but have not found a way how to yet:
>
> Our source is rebuilt every night, but only if some sources changed (e.g.
> the build tree is not removed, only the source tree is updated from CVS).
>
> What I want is to include the build date/time in a versionInfo.cxx sourcefile
> (with __DATE__ and __TIME__ macros) if and only if the executable needs a rebuild.
> That is, the executable has a commandline option "-version" which should print
> the information "build time: xxxxx"
>
> So what I need is something like a rule:
> "if the exe needs a rebuild (any dependant source changed except the versionInfo.cxx file),
> rebuild the versionInfo.o file and link it to the executable"
>
> Any ideas ?
The easiest way would be to wrap your update with a script that checks
if anything happened, and if so, writes the current date/time to a file.
Then just include this file in your build.
Or you could write a custom command to stick the current VCS revision
into a file (or even take the hashes of all source files) and do a
copy_if_different on this, then write another custom command that
depends on the copied file that updates your versionInfo.cxx. The
copy_if_different will prevent the dependency file changing if the
source tree has not changed, which will prevent the rule to make a new
time/date stamp from running and making versionInfo.cxx modified.
--
Matthew
More information about the CMake
mailing list