我正在尝试将 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
top 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)
你将保存逻辑代码的库:
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)
关于c++ - 如何配置我的 CMake 文件以使用 Google Test 和 CTest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48632500/