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

Conan安装GoogleTest后Debug模式出现未定义引用错误

解决Debug模式下GoogleTest未定义引用问题

以下是针对该问题的具体解决方案:

1. 正确使用Conan生成的CMake工具链文件

当前CMake配置未利用Conan生成的工具链文件,导致无法正确匹配Debug版本的GTest库。生成CMake构建目录时需指定对应工具链:

Debug模式构建命令:

cmake -S . -B cmake-build-debug -DCMAKE_TOOLCHAIN_FILE=cmake-build-debug/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Debug

Release模式构建命令:

cmake -S . -B cmake-build-release -DCMAKE_TOOLCHAIN_FILE=cmake-build-release/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release

2. 明确指定Conan安装时的构建类型

安装依赖时需明确指定Debug/Release类型,避免默认使用Release构建Debug版本依赖:

安装Debug依赖:

conan install . --output-folder=cmake-build-debug --build=missing -s build_type=Debug

安装Release依赖:

conan install . --output-folder=cmake-build-release --build=missing -s build_type=Release

3. 优化CMakeLists配置

修改测试模块的CMakeLists.txt,移除冗余配置并简化链接逻辑:

# For now, we build as executable, in the future make it library
add_executable(test-engine-mdh main.cpp)

# Finds absl when installed system wide.
find_package(GTest REQUIRED)
find_package(Threads REQUIRED)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

target_include_directories(test-engine-mdh PRIVATE "include/")

# 移除全局include_directories,导入目标会自动处理头文件路径
# include_directories(${GTest_INCLUDE_DIR})

target_link_libraries(test-engine-mdh
        Threads::Threads
        GTest::gtest
        GTest::gtest_main  # 仅保留一个main入口,避免冲突
        GTest::gmock
        # ... Any other linked libraries
        )

4. 验证依赖路径

检查Debug构建目录下的conaninfo.txt,确认GTest的构建类型为Debug,且CMake正确指向Debug版本的库文件。

以上步骤可确保CMake在Debug模式下链接到Conan安装的对应版本GTest库,解决未定义引用问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:04:55