【问题标题】:Linking gtest based application on windows: visual studio and cmake在 Windows 上链接基于 gtest 的应用程序:visual studio 和 cmake
【发布时间】:2014-02-26 10:49:19
【问题描述】:

对于 linux,我使用以下 cmake 规则来构建和链接为我的库 (bt_lib) 运行单元测试的可执行文件:

set(TEST_EXECUTABLE unit_tests)

include_directories(
                 $ENV{GMOCK_ROOT}/include
                 $ENV{GMOCK_ROOT}
         $ENV{GMOCK_ROOT}/gtest
         $ENV{GMOCK_ROOT}/gtest/include
               )

add_executable(${TEST_EXECUTABLE} test1.cpp ../${PROJECT_H}) 

target_link_libraries(${TEST_EXECUTABLE}
                        bt_lib
                        gtest
                        gtest_main
                        pthread
                        gmock
                        )

CMake 生成 Visual Studio 项目文件,我可以毫无问题地构建我的库和 gmock/gtest。但实际测试需要 pthread,这在 windows 上是不可用的。

如果我在 Windows 上,我可以检查我正在为哪个操作系统配置并将 $TEST_EXECUTABLE 链接到 pthread 以外的其他东西吗?如果有,怎么做?

我必须补充一点,我是 windows 上大多数 c++ 的初学者,所以即使是相当琐碎的事情也需要解释。我认为使用 Visual Studio 是我想要的方式(而不是像 http://www.mingw.org/ 这样的方式)。

【问题讨论】:

  • 您可能对docs.biicode.com/examples/google-test-tutorial.html 中的解决方案感兴趣,我在Visual2008-2010 和Mingw 中都尝试过,并且效果很好。基本上,他们使用 CMake 在您的项目中自动检索和配置 googletest。还有Gmock库,强悍我还没测试过。

标签: c++ visual-studio-2012 cmake googletest


【解决方案1】:

基本上,pthread 在 Windows 中并不存在,因为它是 POSIX 规范。如果你的代码有 pthread_create 之类的函数,你需要一个 Windows 的 pthreads 端口,例如:

当您下载并安装 pthread 端口时,您通常应该指定 INCLUDE 和 LINK 目录:

IF (WIN32)  
    INCLUDE_DIRECTORIES(your_path_to_pthreads_includes)
    LINK_DIRECTORIES(your_path_to_pthreads_lib)
ELSE(WIN32)

【讨论】:

    猜你喜欢
    • 2020-01-13
    • 2015-03-15
    • 2018-10-02
    • 1970-01-01
    • 2011-12-16
    • 2017-11-27
    • 2020-03-26
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多