Kolja Waschk wrote: > Beside the SVN revision number of the working base, our embedded > revision information also tells whether the library was built from code > with local modifications, i.e. whether it equals the source code stored > in the SVN repository or was changed afterwards. Changing a single byte > in a header file already affects that state, so all headers need to be > watched.
So you need some combination of "svn info" and "svn status". > Try #1: add_custom_command(OUTPUT version.cc DEPENDS ${SOURCES} ...) You need the custom command to run every time the build starts: add_custom_target(update_version COMMAND ${CMAKE_COMMAND} -P update_version.cmake ) The update_version.cmake script should compute the version and then use configure_file() to store the result in "version.h" with a copy-if-different check. The key is then to make the library depend on this rule at a *target* level, but only on version.h at a *file* level. add_library(mylib version.c) # version.c does #include "version.h" add_dependencies(mylib update_version) The update_version target will always run the command before the build system considers mylib. Then the version.c source will recompile only if the version update rule actually changed version.h content. > Try #2: as above plus IMPLICIT_DEPENDS CXX ${SOURCES} ... FYI, any solution based on IMPLICIT_DEPENDS will not work with VS IDE and other non-Makefile generators. It is documented to work only with Makefile generators. -Brad _______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake