集成与构建
构建系统
最新发布的 doctest 版本可以从这里获取: https://gitee.com/kumo-hub/doctest/raw/master/doctest/doctest.h
您可以将上面 URL 中特定版本的master替换为dev或v1.4.8等标签。
CMake
- doctest 最容易在您自己的存储库中用作单个文件。然后下面的最小示例将起作用:
cmake_minimum_required(VERSION 3.0)
project(cmake_test VERSION 0.0.1 LANGUAGES CXX)
# Prepare doctest for other targets to use
find_package(doctest REQUIRED)
# Make test executable
add_executable(tests main.cpp)
target_compile_features(tests PRIVATE cxx_std_17)
target_link_libraries(tests PRIVATE doctest::doctest)
- 您还可以使用以下 CMake 代码片段自动从 github 获取整个 doctest 存储库并将其配置为外 部项目:
include(ExternalProject)
find_package(Git REQUIRED)
ExternalProject_Add(
doctest
PREFIX ${CMAKE_BINARY_DIR}/doctest
GIT_REPOSITORY https://gitee.com/kumo-hub/doctest.git
TIMEOUT 10
UPDATE_COMMAND ${GIT_EXECUTABLE} pull
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
)
# Expose required variable (DOCTEST_INCLUDE_DIR) to parent scope
ExternalProject_Get_Property(doctest source_dir)
set(DOCTEST_INCLUDE_DIR ${source_dir}/doctest CACHE INTERNAL "Path to include folder for doctest")
稍后您将能够使用 doctest include 目录,如下所示:
# add it globally
include_directories(${DOCTEST_INCLUDE_DIR})
# or per target
target_include_directories(my_target PUBLIC ${DOCTEST_INCLUDE_DIR})
- 如果您拥有整个 doctest 存储库(作为子模块或文件),您还可以使用
add_subdirectory(path/to/doctest)将其包含在 CMake 构建中,然后您可以像这样使用它这:
add_executable(my_tests src_1.cpp src_2.cpp ...)
target_link_libraries(my_tests doctest)
-
doctest 存储库的“CMakeLists.txt”文件具有“install()”命令,因此您也可以将 doctest 作为包使用。
-
要从可执行文件中发现测试并将其注册到ctest中,您可以使用
scripts/cmake/doctest.cmake中 的doctest_discover_tests(<target>)- 阅读文件中有关如何 使用它的注释。它的工作原理就像Catch 中的相同功能。
包管理器
doctest 可通过以下包管理器获得:
- kmpkg
kmpkg integrate install
kmpkg install doctest
kmpkg 中的 doctest 端口由 Kumo 团队成员保持最新。如果版本已过时,请在 kmpkg 存储库 上创建问题或拉取请求。
- hunter
- conan
- Homebrew (
brew install doctest)
重要
kmpkg 安装的版本是 kumo 在GITEE的镜像版本,其他包管理器安装的是官网版本。使用上没有差异。