diff --git a/.travis.yml b/.travis.yml index 49ea5476..c578ce26 100644 --- a/.travis.yml +++ b/.travis.yml @@ -104,6 +104,7 @@ script: -DCMAKE_CXX_STANDARD=$CPP \ -DSPDLOG_BUILD_EXAMPLES=ON \ -DSPDLOG_BUILD_BENCH=OFF \ + -DBUILD_TESTING=ON \ -DSPDLOG_SANITIZE_ADDRESS=$ASAN \ -DSPDLOG_SANITIZE_THREAD=$TSAN - make VERBOSE=1 -j2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 1dc01f87..7fda48a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,6 @@ cmake_minimum_required(VERSION 3.1) project(spdlog VERSION 1.3.0 LANGUAGES CXX) -include(CTest) include(CMakeDependentOption) include(GNUInstallDirs) @@ -54,10 +53,22 @@ endif() option(SPDLOG_BUILD_EXAMPLES "Build examples" ${SPDLOG_MASTER_PROJECT}) option(SPDLOG_BUILD_BENCH "Build benchmarks" ${SPDLOG_MASTER_PROJECT}) +# Logic for enabling tests: If the user does not explicitly +# specify the value of the SPDLOG_BUILD_TESTING variable then the +# logic is simpler to reason about: that is, testing will be +# built if and only if BUILD_TESTING is ON and we are a Master +# Project. On the other hand, if the user overrides the value of +# SPDLOG_BUILD_TESTING then it can get a bit more tricky due to +# caching. + cmake_dependent_option(SPDLOG_BUILD_TESTING "Build spdlog tests" ${SPDLOG_MASTER_PROJECT} "BUILD_TESTING" OFF ) +if(SPDLOG_BUILD_TESTING) + # Include CTest conditionally since it will enable BUILD_TESTING. + include(CTest) +endif() target_include_directories( spdlog