diff --git a/CMakeLists.txt b/CMakeLists.txt
index 89279af519ab1f17d8a104fd7eb998fb2dde2014..cca6ca8faebe53b7095e645bcc0c41834d5bb0af 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,9 +38,13 @@ get_git_head_revision(GITREV GITHASH)
 git_local_changes(GITHASLOCALCHANGES)
 message("git rev ${GITREV} : ${GITHASH} (${GITHASLOCALCHANGES})")
 
-file(WRITE  "${CMAKE_BINARY_DIR}/git_revision.hpp" "#define GITREV \"${GITREV}\"\n")
-file(APPEND "${CMAKE_BINARY_DIR}/git_revision.hpp" "#define GITHASH \"${GITHASH}\"\n")
-file(APPEND "${CMAKE_BINARY_DIR}/git_revision.hpp" "#define GITHASLOCALCHANGES \"${GITHASLOCALCHANGES}\"\n")
+#file(WRITE  "${CMAKE_BINARY_DIR}/git_revision.hpp.in" "#define GITREV \"${GITREV}\"\n")
+#file(APPEND "${CMAKE_BINARY_DIR}/git_revision.hpp.in" "#define GITHASH \"${GITHASH}\"\n")
+#file(APPEND "${CMAKE_BINARY_DIR}/git_revision.hpp.in" "#define GITHASLOCALCHANGES \"${GITHASLOCALCHANGES}\"\n")
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/git_revision.hpp.in" "${CMAKE_CURRENT_BINARY_DIR}/git_revision.hpp")
+
+list(APPEND SOURCES git_revision.hpp)
 
 include_directories(${CMAKE_BINARY_DIR})
 
diff --git a/git_revision.hpp.in b/git_revision.hpp.in
new file mode 100644
index 0000000000000000000000000000000000000000..86b65c4adc3f26a4ff2ffca8ab8f82e8268f37cb
--- /dev/null
+++ b/git_revision.hpp.in
@@ -0,0 +1,3 @@
+#define GITREV "@GITREV@"
+#define GITHASH "@GITHASH@"
+#define GITHASLOCALCHANGES "@GITHASLOCALCHANGES@"