如何在Windows上将GoogleTest变量GTEST_LIBRARY GTEST_INCLUDE_DIR和GTEST_MAIN_LIBRARY设置为CMake?

问题描述 投票:1回答:2

有一个为linux环境开发的项目。现在我正在尝试使用CMake在Windows上构建它。

我一直在尝试构建项目并始终遇到此错误:

CMake Error at C:/Program Files(x86)/CMake/share/cmake-3.3/Modules/FindPackageHandleStandardArgs.cmake:148 (message):
Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY)
Call Stack (most recent call first):
C:/Program Files(x86)/CMake/share/cmake-3.3/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files(x86)/CMake/share/cmake-3.3/Modules/FindGTest.cmake:204 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
C:/Users/awy9/git/cmake_modules/modules/SigeoGTest.cmake:21 (find_package)  
C:/Users/awy9/git/cmake_modules/modules/SigeoInit.cmake:29 (include)  
CMakeLists.txt:12 (include)

如何在Windows上将这些变量设置为适用于此项目?

c++ linux windows cmake googletest
2个回答
2
投票

UPDATE

@Tsyvarev帮我解决了第一个问题,我引用了他的话:

这是标准CMake消息,当找不到请求的包(在您的情况下为GTest)时。您应该在配置项目之前安装GTest。或者,如果您已将其安装到非标准位置,请通过GTEST_ROOT变量传递此位置:cmake -DGTEST_ROOT = ...

作为将变量传递给cmake的替代方法,您可以设置环境变量:set GTEST_ROOT =

这解决了GTEST_INCLUDE_DIR值的问题,但我仍然遇到这些错误:

C:/ Program Files的CMake错误(x86)/CMake/share/cmake-3.3/Modules/FindPackageH andleStandardArgs.cmake:148(消息):找不到GTest(缺少:GTEST_LIBRARY GTEST_MAIN_LIBRARY)

我认为在Windows环境中,某些值与手册所说的不同。

编译Gtest后,我得到了两个库:gtest.lib和gtest_main.lib然后,我设置了这些文件路径变量:

GTEST_LIBRARY = C:\ Users \ awy9 \ Softwares \ Gtest \ gtest-1.7.0 \ Debug \ gtest.lib GTEST_MAIN_LIBRARY = C:\ Users \ awy9 \ Softwares \ Gtest \ gtest-1.7.0 \ Debug \ gtest_main.lib

现在一切正常!

谢谢


1
投票

老实说,设置硬编码变量并不是最好的想法,就像你使用GTEST_LIBRARY和GTEST_MAIN_LIBRARY一样。

我有同样的问题。我在Windows上使用gtest 1.7.0并得到相同的错误。原来“GTest”应该是“gtest”(不是大写)。

所以我的CMakeLists.txt中的代码变为:

find_package(gtest REQUIRED)

请注意,我使用的是CMake 3.9


编辑

我强烈建议您现在遵循本指南:

http://crascit.com/2015/07/25/cmake-gtest/

到目前为止,我发现在你的cmake项目中使用未构建的gtest和gmock是最好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.