On Nov 4, 2010, Benjamin Bihler <[email protected]> wrote:
> As to the third suggestion: I use the __DATE__ and __TIME__
> macros in my code as a kind of version information. Therefore
> the compilation result differs with every compilation, although
> my source file does not change. Is there yet a better method to
> store the compilation time stamp in a library without fiddling
> with make targets?
We do fiddle with make targets, but in this way:
--[Makefile.am]---------------------------------------------------->8=======
some_SOURCES=app.c
# ensure to compile-in the current date
app.$(OBJEXT): $(LIBDEPS) $(l...@mainmodulename@_a_SOURCES) Makefile
=======8<-------------------------------------------------------------------
app.c includes some
--[app.c]---------------------------------------------------------->8=======
const char *const version = SYS_VERSION
#if defined(DEBUG)
" (DEBUG), compiled " __DATE__ " " __TIME__
#endif
/* non-debug (but release-) versions are guaranteed to have a
* unique dedicated SYS_VERSION */
;
=======8<-------------------------------------------------------------------
I'm not sure if this is best (correct), but seems to work well.
I think the big advantage over .PHONY is that is does not
re-genereate the binary (a new binary, actually!) if nothing was
changed at all, which IMHO would be a bad habit.
oki,
Steffen