Make CERES_EIGEN_VERSION macro independent of CMake.

CERES_EIGEN_VERSION was being defined by the CMakeList.txt file
but it is needed by the android build too. So this change
directly constructs the CERES_EIGEN_VERSION string out of the
raw Eigen version numbers.

Change-Id: I65309805a59076c3082141d9042ab7e0e1b972bc
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index 962d231..6cac9c9 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -132,9 +132,6 @@
 # Also depend on the header files so that they appear in IDEs.
 FILE(GLOB CERES_INTERNAL_HDRS *.h)
 
-# Define version information for use in Solver::FullReport.
-ADD_DEFINITIONS(-DCERES_EIGEN_VERSION="${EIGEN_VERSION}")
-
 # Include the specialized schur solvers.
 IF (SCHUR_SPECIALIZATIONS)
   FILE(GLOB CERES_INTERNAL_SCHUR_FILES generated/*.cc)
diff --git a/internal/ceres/solver_utils.cc b/internal/ceres/solver_utils.cc
index 8b3bae9..7f4ff7e 100644
--- a/internal/ceres/solver_utils.cc
+++ b/internal/ceres/solver_utils.cc
@@ -30,6 +30,7 @@
 
 #include <string>
 
+#include "Eigen/Core"
 #include "ceres/internal/port.h"
 #include "ceres/solver_utils.h"
 #include "ceres/version.h"
@@ -37,9 +38,13 @@
 namespace ceres {
 namespace internal {
 
+#define CERES_EIGEN_VERSION                                          \
+  CERES_TO_STRING(EIGEN_WORLD_VERSION) "."                           \
+  CERES_TO_STRING(EIGEN_MAJOR_VERSION) "."                           \
+  CERES_TO_STRING(EIGEN_MINOR_VERSION)
+
 std::string VersionString() {
   std::string value = std::string(CERES_VERSION_STRING);
-
   value += "-eigen-(" + std::string(CERES_EIGEN_VERSION) + ")";
 
 #ifdef CERES_NO_LAPACK