diff --git a/core/version.cpp.in b/core/version.cpp.in
new file mode 100644
index 0000000..8a47397
--- /dev/null
+++ b/core/version.cpp.in
@@ -0,0 +1,29 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
+ *                           Arizona Board of Regents,
+ *                           Colorado State University,
+ *                           University Pierre & Marie Curie, Sorbonne University,
+ *                           Washington University in St. Louis,
+ *                           Beijing Institute of Technology,
+ *                           The University of Memphis.
+ *
+ * This file is part of NFD (Named Data Networking Forwarding Daemon).
+ * See AUTHORS.md for complete list of NFD authors and contributors.
+ *
+ * NFD is free software: you can redistribute it and/or modify it under the terms
+ * of the GNU General Public License as published by the Free Software Foundation,
+ * either version 3 of the License, or (at your option) any later version.
+ *
+ * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE.  See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "core/version.hpp"
+
+const char NFD_VERSION_STRING[] = "@VERSION_STRING@";
+const char NFD_VERSION_BUILD_STRING[] = "@VERSION_BUILD@";
diff --git a/core/version.hpp.in b/core/version.hpp.in
index 189c9e6..6d62bc7 100644
--- a/core/version.hpp.in
+++ b/core/version.hpp.in
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,49 +26,48 @@
 #ifndef NFD_CORE_VERSION_HPP
 #define NFD_CORE_VERSION_HPP
 
-namespace nfd {
-
-/** NFD version follows Semantic Versioning 2.0.0 specification
- *  http://semver.org/
- */
-
+// NFD version follows Semantic Versioning 2.0.0
+// https://semver.org/spec/v2.0.0.html
+//
 // To change version number, modify VERSION variable in top-level wscript.
 
-/** \brief NFD version represented as an integer
+/** \brief NFD version represented as an integer.
  *
- *  MAJOR*1000000 + MINOR*1000 + PATCH
+ *  Equivalent to: `#NFD_VERSION_MAJOR*1000000 + #NFD_VERSION_MINOR*1000 + #NFD_VERSION_PATCH`
  */
 #define NFD_VERSION @VERSION@
 
-/** \brief NFD version represented as a string
- *
- *  MAJOR.MINOR.PATCH
- */
-#define NFD_VERSION_STRING "@VERSION_STRING@"
-
-/** \brief NFD version string, including git commit information, if NFD is build from
- *         specific git commit
- *
- * NFD_VERSION_BUILD_STRING is obtained using the following command (`NFD-` prefix is
- * afterwards removed):
- *
- *    `git describe --match 'NFD-*'`
- *
- * When NFD is built not from git, NFD_VERSION_BUILD_STRING equals NFD_VERSION_STRING
- *
- * MAJOR.MINOR.PATCH(-release-candidate-tag)(-(number-of-commits-since-tag)-COMMIT-HASH)
- *
- * Example, 0.1.0-rc1-1-g5c86570
- */
-#define NFD_VERSION_BUILD_STRING "@VERSION_BUILD@"
-
-/// MAJOR version
+/// The major version of NFD
 #define NFD_VERSION_MAJOR @VERSION_MAJOR@
-/// MINOR version
+/// The minor version of NFD
 #define NFD_VERSION_MINOR @VERSION_MINOR@
-/// PATCH version
+/// The patch version of NFD
 #define NFD_VERSION_PATCH @VERSION_PATCH@
 
-} // namespace nfd
+/** \brief NFD version represented as a string.
+ *
+ * Format:
+ * @code
+ * MAJOR.MINOR.PATCH
+ * @endcode
+ */
+extern const char NFD_VERSION_STRING[];
+
+/** \brief NFD version string, including git commit information, if NFD is build from
+ *         specific git commit.
+ *
+ * #NFD_VERSION_BUILD_STRING is obtained using the following command (`NFD-` prefix is
+ * afterwards removed): `git describe --match 'NFD-*'`
+ *
+ * When NFD is not built from git, #NFD_VERSION_BUILD_STRING equals #NFD_VERSION_STRING.
+ *
+ * Format:
+ * @code
+ * MAJOR.MINOR.PATCH(-release-candidate-tag)(-(number-of-commits-since-tag)-COMMIT-HASH)
+ * @endcode
+ *
+ * Example: 0.1.0-rc1-1-g5c86570
+ */
+extern const char NFD_VERSION_BUILD_STRING[];
 
 #endif // NFD_CORE_VERSION_HPP
diff --git a/daemon/main.cpp b/daemon/main.cpp
index 83012fc..0675620 100644
--- a/daemon/main.cpp
+++ b/daemon/main.cpp
@@ -305,7 +305,7 @@
       "without WebSocket++";
 #endif
 
-  std::clog << "NFD version " NFD_VERSION_BUILD_STRING " starting\n"
+  std::clog << "NFD version " << NFD_VERSION_BUILD_STRING << " starting\n"
             << "Built with " BOOST_COMPILER ", with " BOOST_STDLIB
                ", " << boostBuildInfo <<
                ", " << pcapBuildInfo <<
diff --git a/docs/doxygen.conf.in b/docs/doxygen.conf.in
index 5ca87f3..4efad0a 100644
--- a/docs/doxygen.conf.in
+++ b/docs/doxygen.conf.in
@@ -780,7 +780,7 @@
 # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
 # Note: If this tag is empty the current directory is searched.
 
-INPUT                  = core daemon tools
+INPUT                  = core daemon tools build/core/version.hpp
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
diff --git a/tests/core/version.t.cpp b/tests/core/version.t.cpp
index 27e3799..2675c0e 100644
--- a/tests/core/version.t.cpp
+++ b/tests/core/version.t.cpp
@@ -45,7 +45,8 @@
 
 BOOST_AUTO_TEST_CASE(VersionString)
 {
-  BOOST_TEST_MESSAGE("NFD_VERSION_STRING = " NFD_VERSION_STRING);
+  BOOST_TEST_MESSAGE("NFD_VERSION_STRING = " << NFD_VERSION_STRING);
+  BOOST_TEST_MESSAGE("NFD_VERSION_BUILD_STRING = " << NFD_VERSION_BUILD_STRING);
 
   static_assert(NFD_VERSION_MAJOR < 1000, "");
   static_assert(NFD_VERSION_MINOR < 1000, "");
@@ -54,6 +55,9 @@
   ::snprintf(buf, sizeof(buf), "%d.%d.%d", NFD_VERSION_MAJOR, NFD_VERSION_MINOR, NFD_VERSION_PATCH);
 
   BOOST_CHECK_EQUAL(NFD_VERSION_STRING, buf);
+
+  std::string build(NFD_VERSION_BUILD_STRING);
+  BOOST_CHECK_EQUAL(build.substr(0, build.find_first_of('-')), NFD_VERSION_STRING);
 }
 
 BOOST_AUTO_TEST_SUITE_END() // TestVersion
diff --git a/wscript b/wscript
index 587a458..d04d3d9 100644
--- a/wscript
+++ b/wscript
@@ -144,27 +144,21 @@
     conf.write_config_header('core/config.hpp')
 
 def build(bld):
-    version(bld)
+    versionhpp(bld)
 
     bld(features='subst',
-        name='version.hpp',
-        source='core/version.hpp.in',
-        target='core/version.hpp',
+        name='version.cpp',
+        source='core/version.cpp.in',
+        target='core/version.cpp',
         install_path=None,
         VERSION_STRING=VERSION_BASE,
-        VERSION_BUILD=VERSION,
-        VERSION=int(VERSION_SPLIT[0]) * 1000000 +
-                int(VERSION_SPLIT[1]) * 1000 +
-                int(VERSION_SPLIT[2]),
-        VERSION_MAJOR=VERSION_SPLIT[0],
-        VERSION_MINOR=VERSION_SPLIT[1],
-        VERSION_PATCH=VERSION_SPLIT[2])
+        VERSION_BUILD=VERSION)
 
     bld.objects(
         target='core-objects',
         features='pch',
-        source=bld.path.ant_glob('core/**/*.cpp'),
-        use='version.hpp NDN_CXX BOOST LIBRT',
+        source=bld.path.find_node('core').ant_glob('*.cpp') + ['core/version.cpp'],
+        use='version.cpp version.hpp NDN_CXX BOOST LIBRT',
         includes='.',
         export_includes='.',
         headers='core/common.hpp')
@@ -236,12 +230,27 @@
         bld.symlink_as('${MANDIR}/man1/nfdc-set-strategy.1', 'nfdc-strategy.1')
         bld.symlink_as('${MANDIR}/man1/nfdc-unset-strategy.1', 'nfdc-strategy.1')
 
+def versionhpp(bld):
+    version(bld)
+
+    bld(features='subst',
+        name='version.hpp',
+        source='core/version.hpp.in',
+        target='core/version.hpp',
+        install_path=None,
+        VERSION=int(VERSION_SPLIT[0]) * 1000000 +
+                int(VERSION_SPLIT[1]) * 1000 +
+                int(VERSION_SPLIT[2]),
+        VERSION_MAJOR=VERSION_SPLIT[0],
+        VERSION_MINOR=VERSION_SPLIT[1],
+        VERSION_PATCH=VERSION_SPLIT[2])
+
 def docs(bld):
     from waflib import Options
     Options.commands = ['doxygen', 'sphinx'] + Options.commands
 
 def doxygen(bld):
-    version(bld)
+    versionhpp(bld)
 
     if not bld.env.DOXYGEN:
         bld.fatal('Cannot build documentation ("doxygen" not found in PATH)')
@@ -260,7 +269,7 @@
 
     bld(features='doxygen',
         doxyfile='docs/doxygen.conf',
-        use='doxygen.conf')
+        use='doxygen.conf version.hpp')
 
 def sphinx(bld):
     version(bld)
