Add the ability to turn shared library compilation on and off
Change-Id: Ib9eacfbc894bb2b66aafff3b930c63e2ad8a555e
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c4c89bc..7b65b03 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -91,6 +91,10 @@
"Build for Android. Use build_android.sh instead of setting this."
OFF)
+OPTION(BUILD_SHARED
+ "Build a dynamically linkable version of Ceres Solver."
+ ON)
+
# To get a more static build, try the following line on Mac and Linux:
# SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index a7f1d97..9e2e1ae 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -205,7 +205,7 @@
# Don't build a DLL on MSVC. Supporting Ceres as a DLL on Windows involves
# nontrivial changes that we haven't made yet.
-IF (NOT MSVC AND NOT BUILD_ANDROID)
+IF (NOT MSVC AND NOT BUILD_ANDROID AND BUILD_SHARED)
ADD_LIBRARY(ceres_shared SHARED ${CERES_LIBRARY_SOURCE})
TARGET_LINK_LIBRARIES(ceres_shared ${CERES_LIBRARY_DEPENDENCIES})
SET_TARGET_PROPERTIES(ceres_shared PROPERTIES
@@ -218,7 +218,7 @@
LIBRARY DESTINATION lib${LIB_SUFFIX}
ARCHIVE DESTINATION lib${LIB_SUFFIX})
-ENDIF (NOT MSVC AND NOT BUILD_ANDROID)
+ENDIF (NOT MSVC AND NOT BUILD_ANDROID AND BUILD_SHARED)
IF (BUILD_TESTING AND GFLAGS)
ADD_LIBRARY(gtest gmock_gtest_all.cc gmock_main.cc)