Add MSVC-specific #define to expose math constants in <cmath>. - MSVC does not expose standard math constants, such as M_PI in <cmath> or <math.h> unless _USE_MATH_DEFINES is defined prior to their inclusion: https://msdn.microsoft.com/en-us/library/4hwaceh6.aspx. - Use CMake to ensure that this is #defined when both Ceres and the examples are compiled, even though it should only be an issue for the examples where M_PI is used. Change-Id: I67af75b100b8138a65514273d23bfe445d92652c
diff --git a/CMakeLists.txt b/CMakeLists.txt index 845c949..ed1425a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -590,6 +590,12 @@ # After the tweaks for the compile settings, disable some warnings on MSVC. if (MSVC) + # On MSVC, math constants are not included in <cmath> or <math.h> unless + # _USE_MATH_DEFINES is defined [1]. As we use M_PI in the examples, ensure + # that _USE_MATH_DEFINES is defined before the first inclusion of <cmath>. + # + # [1] https://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + add_definitions("-D_USE_MATH_DEFINES") # Disable signed/unsigned int conversion warnings. add_definitions("/wd4018") # Disable warning about using struct/class for the same symobl.