如何使用CMake配置带自定义GTest库路径的Visual Studio项目
方案1:执行cmake命令时直接传入GTest路径参数
在你的build目录下执行cmake命令时,添加对应的路径参数,替换实际用户名后执行:
cmake .. -DGTEST_ROOT=C:\Users\[MyUserName]\Documents\Libraries\gTest -DGTEST_LIBRARY=C:\Users\[MyUserName]\Documents\Libraries\gTest\lib\gtest.lib -DGTEST_MAIN_LIBRARY=C:\Users\[MyUserName]\Documents\Libraries\gTest\lib\gtest_main.lib
如果是编译的Debug版本的GTest,对应的库名改成gtestd.lib和gtest_maind.lib即可。
方案2:在CMakeLists.txt中提前指定GTest路径
在find_package(GTest REQUIRED)这一行之前添加如下配置,替换为你实际的GTest路径:
set(GTEST_ROOT "C:/Users/[MyUserName]/Documents/Libraries/gTest" CACHE PATH "Path to GTest root directory") set(GTEST_INCLUDE_DIR "${GTEST_ROOT}/include" CACHE PATH "Path to GTest include directory") set(GTEST_LIBRARY "${GTEST_ROOT}/lib/gtest.lib" CACHE FILEPATH "Path to GTest library") set(GTEST_MAIN_LIBRARY "${GTEST_ROOT}/lib/gtest_main.lib" CACHE FILEPATH "Path to GTest main library")
注意Windows路径在CMake里可以用斜杠/代替反斜杠\避免转义问题。
方案3:添加系统环境变量
将C:\Users\[MyUserName]\Documents\Libraries\gTest添加到系统环境变量GTEST_ROOT,添加完成后重启命令行窗口再执行cmake命令即可,CMake会自动从环境变量里读取GTest的根路径查找对应文件。
额外注意事项
- 要保证你编译的GTest的架构(x86/x64)、C++版本、运行库类型(MD/MT/MDd/MTd)和你当前项目的配置完全一致,否则即使找到库后续链接也会报错
- Visual Studio项目生成时如果是Debug配置,要对应使用Debug版本编译的GTest库,Release配置对应Release版本的GTest库
- 你当前CMakeLists里链接的
pthread是Linux下的线程库,Windows下不需要,建议改成跨平台的写法,避免Windows下链接报错:
if(WIN32) target_link_libraries(unitTestRunner commonLibrary ${GTEST_LIBRARIES}) else() target_link_libraries(unitTestRunner commonLibrary ${GTEST_LIBRARIES} pthread) endif()
内容的提问来源于stack exchange,提问作者Mr.Grease
相关产品推荐
相关产品推荐

