You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Conan引入gtest编译CMake项目出现Release/Debug版本不匹配

问题原因

该错误是C++运行库配置不匹配导致的:通过Conan默认安装的gtest为Release版本,使用MD_DynamicRelease运行库,迭代器调试级别为0;而CMake在Windows下默认生成Debug构建配置,编译出的main.obj使用MDd_DynamicDebug运行库,迭代器调试级别为2,二者链接时就会出现冲突。

解决方案

方案1:安装Debug版本gtest,编译Debug版本程序

执行conan install时指定构建类型为Debug,后续CMake构建也对应Debug配置即可:

mkdir build
cd build 
conan install .. -s build_type=Debug
cmake .. -DCMAKE_BUILD_TYPE=Debug
cmake --build . --config Debug

方案2:编译Release版本程序

如果不需要调试功能,直接编译Release版本和已有的Release版gtest匹配即可:

mkdir build
cd build 
conan install ..
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release

方案3:优化项目配置,减少手动操作

你当前的CMakeLists重复引入了多个Conan配置文件,可简化配置逻辑,直接使用Conan生成的目标,避免配置冲突,修改后的CMakeLists参考如下:

project(conan-myapp)
cmake_minimum_required(VERSION 3.1)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup(TARGETS)

enable_testing()

add_executable(myapp "main.cpp")
target_link_libraries(myapp CONAN_PKG::gtest CONAN_PKG::gtest_main)
add_test(myapp bin/myapp)

后续构建时只要保持Conan安装的依赖版本和CMake构建类型一致即可。

内容的提问来源于stack exchange,提问作者SebastianH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:36:02