@@ -63,23 +63,33 @@ endif()
63
63
64
64
set (CLI11_MULTIONLY_TESTS TimerTest)
65
65
66
- add_library (catch_main main.cpp)
66
+ add_library (catch_main main.cpp catch.hpp )
67
67
target_include_directories (catch_main PUBLIC "${CMAKE_CURRENT_SOURCE_DIR} " )
68
68
69
- # Currently a required download; could be make to look for existing Catch2, but
70
- # that would require changing the includes. FetchContent would be better, but
71
- # requires newer CMake.
72
-
73
- set (url https://github.com/philsquared/Catch/releases/download/v2.13.6/catch.hpp)
74
- file (
75
- DOWNLOAD ${url} "${CMAKE_CURRENT_BINARY_DIR} /catch.hpp"
76
- STATUS status
77
- EXPECTED_HASH SHA256=681e7505a50887c9085539e5135794fc8f66d8e5de28eadf13a30978627b0f47)
78
- list (GET status 0 error)
79
- if (error)
80
- message (FATAL_ERROR "Could not download ${url} " )
69
+ find_package (Catch2 CONFIG)
70
+
71
+ if (Catch2_FOUND)
72
+ if (NOT TARGET Catch2::Catch2)
73
+ message (FATAL_ERROR "Found Catch2 at ${Catch2_DIR} but targets are missing." )
74
+ endif ()
75
+ message (STATUS "Found Catch2" )
76
+ target_link_libraries (catch_main PUBLIC Catch2::Catch2)
77
+ else ()
78
+ message (STATUS "Downloading Catch2" )
79
+
80
+ # FetchContent would be better, but requires newer CMake.
81
+ file (MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /catch2" )
82
+ set (url https://github.com/philsquared/Catch/releases/download/v2.13.7/catch.hpp)
83
+ file (
84
+ DOWNLOAD ${url} "${CMAKE_CURRENT_BINARY_DIR} /catch2/catch.hpp"
85
+ STATUS status
86
+ EXPECTED_HASH SHA256=ea379c4a3cb5799027b1eb451163dff065a3d641aaba23bf4e24ee6b536bd9bc)
87
+ list (GET status 0 error)
88
+ if (error)
89
+ message (FATAL_ERROR "Could not download ${url} , and Catch2 not found on your system." )
90
+ endif ()
91
+ target_include_directories (catch_main PUBLIC "${CMAKE_CURRENT_BINARY_DIR} " )
81
92
endif ()
82
- target_include_directories (catch_main PUBLIC "${CMAKE_CURRENT_BINARY_DIR} " )
83
93
84
94
# Target must already exist
85
95
macro (add_catch_test TESTNAME)
@@ -174,8 +184,6 @@ file(WRITE "${PROJECT_BINARY_DIR}/CTestCustom.cmake"
174
184
target_compile_definitions (informational PRIVATE ${boost-optional -def})
175
185
target_compile_definitions (OptionalTest PRIVATE ${boost-optional -def})
176
186
177
- message (STATUS "Boost libs=${Boost_INCLUDE_DIRS} " )
178
-
179
187
if (TARGET Boost::boost)
180
188
message (STATUS "including boost target" )
181
189
target_link_libraries (informational PRIVATE Boost::boost)
@@ -185,6 +193,7 @@ if(TARGET Boost::boost)
185
193
target_link_libraries (OptionalTest_Single PRIVATE Boost::boost)
186
194
target_link_libraries (BoostOptionTypeTest_Single PRIVATE Boost::boost)
187
195
endif ()
196
+ message (STATUS "Boost libs=${Boost_INCLUDE_DIRS} " )
188
197
elseif (BOOST_FOUND)
189
198
message (STATUS "no boost target" )
190
199
target_include_directories (informational PRIVATE ${Boost_INCLUDE_DIRS} )
@@ -194,6 +203,9 @@ elseif(BOOST_FOUND)
194
203
target_include_directories (OptionalTest_Single PRIVATE ${Boost_INCLUDE_DIRS} )
195
204
target_include_directories (BoostOptionTypeTest_Single PRIVATE ${Boost_INCLUDE_DIRS} )
196
205
endif ()
206
+ message (STATUS "Boost libs=${Boost_INCLUDE_DIRS} " )
207
+ else ()
208
+ message (STATUS "Boost not found, not adding boost tests" )
197
209
endif ()
198
210
199
211
if (CMAKE_BUILD_TYPE STREQUAL Coverage)
0 commit comments