Add versions of dependencies used to FullReport().

Change-Id: I0a41e88e0669364d21ef86146f0b572f0f08ece5
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index fedeafe..f754381 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -131,6 +131,9 @@
 # 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)
@@ -145,10 +148,14 @@
 ENDIF (NOT MINIGLOG AND GLOG_FOUND)
 
 IF (SUITESPARSE AND SUITESPARSE_FOUND)
+  # Define version information for use in Solver::FullReport.
+  ADD_DEFINITIONS(-DCERES_SUITESPARSE_VERSION="${SUITESPARSE_VERSION}")
   LIST(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ${SUITESPARSE_LIBRARIES})
 ENDIF (SUITESPARSE AND SUITESPARSE_FOUND)
 
 IF (CXSPARSE AND CXSPARSE_FOUND)
+  # Define version information for use in Solver::FullReport.
+  ADD_DEFINITIONS(-DCERES_CXSPARSE_VERSION="${CXSPARSE_VERSION}")
   LIST(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES ${CXSPARSE_LIBRARIES})
 ENDIF (CXSPARSE AND CXSPARSE_FOUND)
 
diff --git a/internal/ceres/solver_utils.cc b/internal/ceres/solver_utils.cc
index ad22e96..8b3bae9 100644
--- a/internal/ceres/solver_utils.cc
+++ b/internal/ceres/solver_utils.cc
@@ -40,6 +40,8 @@
 std::string VersionString() {
   std::string value = std::string(CERES_VERSION_STRING);
 
+  value += "-eigen-(" + std::string(CERES_EIGEN_VERSION) + ")";
+
 #ifdef CERES_NO_LAPACK
   value += "-no_lapack";
 #else
@@ -47,11 +49,11 @@
 #endif
 
 #ifndef CERES_NO_SUITESPARSE
-  value += "-suitesparse";
+  value += "-suitesparse-(" + std::string(CERES_SUITESPARSE_VERSION) + ")";
 #endif
 
 #ifndef CERES_NO_CXSPARSE
-  value += "-cxsparse";
+  value += "-cxsparse-(" + std::string(CERES_CXSPARSE_VERSION) + ")";
 #endif
 
 #ifdef CERES_USE_EIGEN_SPARSE