繁体   English   中英

如何使用cmake编译/链接测试用例(googleTest)到共享库中捆绑的代码?

[英]how do i compile/link test cases (googleTest) using cmake to the code bundled up in shared library?

我的项目是这样组织的:

  • cpp
    • main.cpp(从dataStructures/common/调用代码)
    • CMakeLists.txt( 最顶部的 CMakeLists文件)
    • 建立
    • 测试
      • main.cpp
      • CMakeLists.txt
      • 共同
        • CMakeLists.txt
        • 包括
        • src
      • 谷歌测试
      • 建立
    • 共同
      • CMakeLists.txt(应负责构建公共共享库)
      • 包括
        • 实用程序
      • src
        • utils.cpp
      • 建立

build\\目录包含已构建的目标。 实际的代码可以在这里看到: https : //github.com/brainydexter/PublicCode/tree/master/cpp

我能够为实际代码(如common )构建shared库。 现在,我想使用GoogleTest对其进行测试。 因此,我创建了一个test目录,并将测试代码放入其中(存储库中的内容只是一个示例,更像是hello world,以使构建系统正常工作。稍后我将添加更多测试用例)。

我需要一些帮助来触发最顶层的CMakeLists.txt的测试 我不确定该怎么做。 test ,CMakeLists.txt看起来像这样:

cmake_minimum_required(VERSION 3.1.2)

add_subdirectory(googletest/googletest)
include_directories(googletest/googletest/include)

add_subdirectory(common)

enable_testing()

add_executable(testCpp main.cpp)
target_link_libraries(testCpp gtest gtest_main )

我是否需要添加其他内容以启用test/common中的test/common

test/common/CMakeLists.txt

file(GLOB SOURCES "src/*.cpp")

add_executable(testCommon ${SOURCES})

target_link_libraries(testCommon cppCommon)

我不确定目标是否应该在此处执行,还是Google测试框架可以使用的库? 我对此表示感谢。

您可能会发现FindGTest模块很有帮助。 由于gtest的位置是固定的,因此您可以按照以下步骤找到它:

set (GTEST_ROOT ${CMAKE_SOURCE_DIR}/googletest)
find_package (GTest required)

至于是否需要可执行文件,此模块定义了GTEST_MAIN_LIBRARIES变量,因此在链接测试时,您只需要执行以下操作:

target_link_libraries(testCommon ${GTEST_MAIN_LIBRARIES})

生成的二进制文件将使用默认的gtest主函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM