From 7a05f1ed063a375763a09e260308625344c8056c Mon Sep 17 00:00:00 2001 From: Victor Sui Date: Sun, 14 Jun 2020 23:15:48 -0700 Subject: [PATCH] cmake: Fail loudly when found rapidjson is too old (#646) When the rapidjson found by cmake is an older version it defines a variable RAPIDJSON_INCLUDE_DIRS instead of RapidJSON_INCLUDE_DIRS (#455). According to #383 we do not want to make these older version work with ccls. However currently if the rapidjson found by cmake is an older version that defined RAPIDJSON_INCLUDE_DIRS, then the cmake invocation still succeeds but any build command will fail because RapidJSON_INCLUDE_DIRS was never set properly. This makes the cmake invocation fail with a relevant error message in this event. --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 471f4a63..5ffe0e68 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,6 +151,9 @@ set_property(SOURCE src/utils.cc APPEND PROPERTY COMPILE_DEFINITIONS if(USE_SYSTEM_RAPIDJSON) find_package(RapidJSON QUIET) + if(NOT DEFINED RapidJSON_INCLUDE_DIRS AND DEFINED RAPIDJSON_INCLUDE_DIRS) + message(FATAL_ERROR "RapidJSON version is likely too old. See https://github.com/MaskRay/ccls/issues/455") + endif() endif() if(NOT RapidJSON_FOUND) set(RapidJSON_INCLUDE_DIRS third_party/rapidjson/include)