I am trying to integrate GTest with CMake as seamlessly as possible. But the default build type for my test projects are /MDd
and GTest defaults to /MTd
. I am manually changing GTest project properties to emit debug DLL.
But every time I make changes to my CMakeLists.txt
, GTest defaults back to /MTd
. How do I stop this?
If Ted Middleton's answer doesn't work, try to use FORCE:
It worked for me
You can define
gtest_force_shared_crt
toON
before including gtest to achieve this. You can either do this via the command line:or in your
CMakeLists.txt
:We solved the problem by bypassing GTest's own build system and compiling GTest as a CMake object library from its unity build source file
gtest-all.cc
:That way GTest will always be compiled with the same options that we use for the project. A test executable that uses GTest can then be built in the following way:
I think a better option is @Fraser's answer - in that case, cmake + gtest 'just work'.
It's worth mentioning that in order to override the internal gtest
option
setting, you need to put the variable in the cmake cache: