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:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user