CMake: include(CTest) only when building tests.

This is needed in order to support usage of this library as a
subdirectory in a parent project.  In that situation, prior
to this change, the inclusion of CTest would unconditionally
enable BUILD_TESTING which would then bleed into other parts
of the project.

Also added some comments explaining how this logic works.
This commit is contained in:
David P. Sicilia 2018-12-01 20:37:06 -05:00
parent 486b6937d3
commit 85b4d7c8d6

View File

@ -5,7 +5,6 @@
cmake_minimum_required(VERSION 3.1) cmake_minimum_required(VERSION 3.1)
project(spdlog VERSION 1.3.0 LANGUAGES CXX) project(spdlog VERSION 1.3.0 LANGUAGES CXX)
include(CTest)
include(CMakeDependentOption) include(CMakeDependentOption)
include(GNUInstallDirs) include(GNUInstallDirs)
@ -54,10 +53,22 @@ endif()
option(SPDLOG_BUILD_EXAMPLES "Build examples" ${SPDLOG_MASTER_PROJECT}) option(SPDLOG_BUILD_EXAMPLES "Build examples" ${SPDLOG_MASTER_PROJECT})
option(SPDLOG_BUILD_BENCH "Build benchmarks" ${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 cmake_dependent_option(SPDLOG_BUILD_TESTING
"Build spdlog tests" ${SPDLOG_MASTER_PROJECT} "Build spdlog tests" ${SPDLOG_MASTER_PROJECT}
"BUILD_TESTING" OFF "BUILD_TESTING" OFF
) )
if(SPDLOG_BUILD_TESTING)
# Include CTest conditionally since it will enable BUILD_TESTING.
include(CTest)
endif()
target_include_directories( target_include_directories(
spdlog spdlog