【发布时间】:2021-01-03 14:13:28
【问题描述】:
如何强制使用 /MT 选项进行 google 测试编译? 我看到谷歌测试试图用 MT 编译(internal_utils.cmake line 33):
if (NOT BUILD_SHARED_LIBS AND NOT gtest_force_shared_crt)
string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}")
endif()
但它不起作用(BUILD_SHARED_LIBS 和 gtest_force_shared_crt 已禁用)。
当我的项目使用 MT 编译时出现错误:
gtest.lib(gtest-all.obj):错误 LNK2038:检测到不匹配 “RuntimeLibrary”:值“MD_DynamicRelease”与值不匹配 "MT_StaticRelease"
还有一些 LNK2005 和 LNK4217。 如果我尝试在没有 MT 的情况下编译我的项目,一切都可以编译。 我该如何解决?提前致谢!
【问题讨论】:
-
欢迎来到 Stack Overflow!在 CMake(3.15 及更高版本)中设置 MSVC 运行时的正确方法是使用
MSVC_RUNTIME_LIBRARY,如响应 here 所示。 -
@squareskittles,我需要为“gtest”目标执行此操作吗?
标签: c++ cmake googletest