| <!DOCTYPE html> |
| <html> |
| <title>build-systems</title> |
| <xmp theme="united" style="display:none;"> |
| |
| ## Build systems |
| |
| The latest released version of doctest can be obtained from here: https://raw.githubusercontent.com/onqtam/doctest/master/doctest/doctest.h |
| |
| You can substitute ```master``` with ```dev``` or a tag like ```1.2.9``` for a specific version in the URL above. |
| |
| ### CMake |
| |
| - **doctest** is easiest to use as a single file inside your own repository. Then the following minimal example will work: |
| |
| ```cmake |
| cmake_minimum_required(VERSION 3.0) |
| project(cmake_test) |
| |
| # Prepare doctest for other targets to use |
| add_library(doctest INTERFACE) |
| target_include_directories(doctest INTERFACE path/to/doctest) |
| |
| # Make test executable |
| add_executable(tests main.cpp) |
| target_link_libraries(tests doctest) |
| ``` |
| |
| - You can also use the following CMake snippet to automatically fetch the entire **doctest** repository from github and configure it as an external project: |
| |
| ```cmake |
| include(ExternalProject) |
| find_package(Git REQUIRED) |
| |
| ExternalProject_Add( |
| doctest |
| PREFIX ${CMAKE_BINARY_DIR}/doctest |
| GIT_REPOSITORY https://github.com/onqtam/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") |
| ``` |
| |
| And later you'll be able to use the doctest include directory like this: |
| |
| ```cmake |
| # add it globally |
| include_directories(${DOCTEST_INCLUDE_DIR}) |
| |
| # or per target |
| target_include_directories(my_target PUBLIC ${DOCTEST_INCLUDE_DIR}) |
| ``` |
| |
| - If you have the entire doctest repository available (as a submodule or just as files) you could also include it in your CMake build by using ```add_subdirectory(path/to/doctest)``` and then you could use it like this: |
| |
| ```cmake |
| add_executable(my_tests src_1.cpp src_2.cpp ...) |
| target_link_libraries(my_tests doctest) |
| ``` |
| |
| - The ```CMakeLists.txt``` file of the doctest repository has ```install()``` commands so you could also use doctest as a package. |
| |
| ### Package managers |
| |
| **doctest** is available through the following package managers: |
| |
| - vcpkg |
| - hunter |
| - conan |
| - https://bintray.com/bincrafters/public-conan/doctest:bincrafters |
| - https://bintray.com/mmha/conan/doctest%3Ammha |
| |
| --- |
| |
| [Home](readme.html#reference) |
| |
| <p align="center"><img src="../../scripts/data/logo/icon_2.svg"></p> |
| |
| |
| </xmp> |
| <script src="strapdown.js/strapdown.js"></script> |
| </html> |