[英]How do I configure my CMake file to work with Google Test and CTest?
我正在尝试将GTest框架集成到我的项目中,但是不确定如何做。 我正在使用CMake构建它。 理想情况下,我想创建一个单独的可执行文件来运行测试,并且我希望能够选择在单个模块或整个项目上运行测试。 我也希望它可以与CTest一起使用,但这不是优先事项。 我该如何设置? 我的项目结构如下:
3rdparty
|--gtest
|--include
|--(gtest includes)
|--lib
|--libgtest.a
src
|--module1
|--file1.cpp
|--file2.cpp
|--CMakeLists.txt
|--module2
|--file3.cpp
|--file4.cpp
|--CMakeLists.txt
|--CMakeLists.txt
include
|--module1
|--file1.hpp
|--file2.hpp
|--module2
|--file3.hpp
|--file4.hpp
test
|--module1
|--module1test.cpp
|--module2
|--module2test.cpp
CMakeLists.txt
这是我的主要CMakeLists.txt:
cmake_minimum_required(VERSION 3.1)
project(Aura)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
include_directories(include)
add_subdirectory(src)
set (run_src
src/run.cpp
)
add_executable(aura ${run_src})
target_link_libraries(aura util)
好吧,我可以为概念本身提供帮助,您应该知道如何将其适应您的项目结构。 因此,总的来说,您希望使程序结构如下:
Structure:
|────CMakeLists.txt
├─── client
───────CMakeLists.txt
├─── libs
───────CMakeLists.txt
├─── tests
───────CMakeLists.txt
───────googletest
───────googletest
───────googlemock
顶级cmake可以简单地包含子目录:
cmake_minimum_required(VERSION 3.1)
project(Aura)
set (CMAKE_CXX_STANDARD 14)
add_subdirectory(client)
add_subdirectory(test)
add_subdirectory(lib)
将使您的应用程序可执行的客户端cmake如下所示:
project(AuraClient)
include_directories(${CMAKE_CURRENT_SOURCE_DIR} )
set(Aura-SRCS
someSource.cpp
main.cpp)
set(Aura-HEADERS
someSource.h)
add_executable(Aura ${Aura-SRCS} ${Aura-HEADERS})
target_link_libraries(Aura auraLib)
lib,用于保存逻辑代码:
project(AuraLib)
set(lib_SRCS
SomeLogic.cpp
)
set(lib_HEADERS
SomeLogic.h
)
add_library(auraLib ${lib_SRCS} ${lib_HEADERS})
和您的测试cmake:
编辑:只是将该cmake更改为不太复杂的解决方案
enable_testing()
project(AuraTest)
add_subdirectory(googletest)
set(test_HEADERS
)
set(test_SOURCES
main.cpp
PointTest.cpp)
add_executable(AuraTest ${test_SOURCES} ${test_HEADERS} ${mock_HEADERS})
target_include_directories(AuraTest PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR})
target_link_libraries(AuraTest PRIVATE auraLib gtest gmock pthread)
您应该添加测试可执行文件,就像添加目标aura
并包含gtest包含项和链接gtest库一样。
将以下行添加到您的CMakeLists.txt:
include_directories(3rdparty/gtest/include)
link_directories(3rdparty/gtest/lib)
add_executable(moduleTest1 moduleTest1.cpp)
target_link_libraries(moduleTest1 gtest)
如果子模块还有其他链接,则也应链接它们。 例如,如果需要target_link_libraries(moduleTest1 gtest module1)
链接,例如target_link_libraries(moduleTest1 gtest module1)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.