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

如何通过CMake将GoogleTest构建为共享库(DLL)

解决GoogleTest编译生成.dll动态库的CMake配置问题

核心问题分析

你之前手动修改CMakeCache.txt的方式容易导致配置不一致,而且.dll.a是MinGW环境下的导入库,真正的.dll文件其实已经生成了,只是你没找对位置。另外手动设置CMAKE_EXE_LINKER_FLAGS=-shared是多余的,反而可能干扰CMake的自动配置。

正确配置步骤(无需手动改CMakeCache.txt)

直接在CMake配置阶段设置以下两个关键变量,推荐用CMake命令行或CMake GUI操作,避免手动修改缓存文件:

1. 命令行方式(MinGW环境)

在GoogleTest源码目录外新建build文件夹,进入后执行:

mkdir build && cd build
cmake -G "CodeBlocks - MinGW Makefiles" -DBUILD_SHARED_LIBS=ON -DGTEST_CREATE_SHARED_LIBRARY=1 ..
  • -G "CodeBlocks - MinGW Makefiles":指定生成CodeBlocks项目文件
  • -DBUILD_SHARED_LIBS=ON:CMake全局开关,控制生成动态库而非静态库
  • -DGTEST_CREATE_SHARED_LIBRARY=1:GoogleTest专属宏,启用动态库导出符号的编译逻辑

2. CMake GUI方式

  • 选择GoogleTest源码目录和新建的build目录
  • 点击「Configure」,选择CodeBlocks - MinGW Makefiles作为生成器
  • 在变量列表中找到BUILD_SHARED_LIBS,设为ON
  • 添加新变量GTEST_CREATE_SHARED_LIBRARY,类型选BOOL,值设为1
  • 再次点击「Configure」,确认无错误后点击「Generate」生成CodeBlocks项目

找到生成的.dll文件

生成并编译项目后:

  • .dll.a是链接时用的导入库,存放在build/lib目录
  • 真正的.dll动态库文件会在build/bin目录(或对应Debug/Release子目录),这才是你项目运行时需要的文件

额外注意事项

  • 确保使用最新版GoogleTest,旧版本对动态库的支持可能不完善
  • 编译时要对应项目的Debug/Release模式,Debug版的.dll会带d后缀(比如gtestd.dll)
  • 项目中使用时,需将.dll放到可执行文件同目录,链接阶段使用.dll.a导入库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:05:20