blob: d012b078706ea6ed3c745c994eed4a10da9d617a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
diff --git a/cmake/FindJsonCPP.cmake b/cmake/FindJsonCPP.cmake
index 59e971a58..18260fde8 100644
--- a/cmake/FindJsonCPP.cmake
+++ b/cmake/FindJsonCPP.cmake
@@ -39,10 +39,11 @@
# JsonCPP_FOUND - The jsoncpp library has been found
# JsonCPP_TARGET - The name of the CMake target for the jsoncpp library
+if(TARGET jsoncpp_lib OR TARGET jsoncpp_static OR TARGET PkgConfig::jsoncpp)
-if(TARGET jsoncpp_lib OR TARGET jsoncpp_static)
-
- if(TARGET jsoncpp_lib)
+ if(TARGET PkgConfig::jsoncpp)
+ set(JsonCPP_TARGET PkgConfig::jsoncpp)
+ elseif(TARGET jsoncpp_lib)
set(JsonCPP_TARGET jsoncpp_lib)
else()
set(JsonCPP_TARGET jsoncpp_static)
@@ -57,24 +58,50 @@ if(TARGET jsoncpp_lib OR TARGET jsoncpp_static)
mark_as_advanced(JsonCPP_TARGET)
else()
-
- set(_OPTIONS "CONFIG")
+ find_package(PkgConfig QUIET)
+
+ set(_OPTIONS1 "CONFIG")
+ set(_OPTIONS2 "IMPORTED_TARGET") # for pkg_check_modules fallback
+
if(JsonCPP_FIND_REQUIRED)
- list(APPEND _OPTIONS "REQUIRED")
- endif()
- if(JsonCPP_FIND_QUIETLY)
- list(APPEND _OPTIONS "QUIET")
+ if(PKG_CONFIG_FOUND)
+ list(APPEND _OPTIONS2 "REQUIRED")
+ else()
+ list(APPEND _OPTIONS1 "REQUIRED")
+ endif()
endif()
- if(JsonCPP_FIND_VERSION)
- list(PREPEND _OPTIONS "${jsoncpp_FIND_VERSION}")
+ if(JsonCPP_FIND_QUIETLY)
+ list(APPEND _OPTIONS1 "QUIET")
+ list(APPEND _OPTIONS2 "QUIET")
endif()
- if(JsonCPP_FIND_EXACT)
- list(APPEND _OPTIONS "EXACT")
+ if(PKG_CONFIG_FOUND)
+ if(JsonCPP_FIND_VERSION)
+ if(JsonCPP_FIND_EXACT)
+ list(APPEND _OPTIONS2 "jsoncpp=${JsonCPP_FIND_VERSION}")
+ else()
+ list(APPEND _OPTIONS2 "jsoncpp>=${JsonCPP_FIND_VERSION}")
+ endif()
+ else()
+ list(APPEND _OPTIONS2 "jsoncpp")
+ endif()
+ else()
+ if(JsonCPP_FIND_VERSION)
+ list(PREPEND _OPTIONS1 "${jsoncpp_FIND_VERSION}")
+ endif()
+ if(JsonCPP_FIND_EXACT)
+ list(APPEND _OPTIONS1 "EXACT")
+ endif()
endif()
- find_package(jsoncpp ${_OPTIONS})
+ find_package(jsoncpp ${_OPTIONS1})
+
+ if(NOT JsonCPP_FOUND)
+ pkg_check_modules(jsoncpp ${_OPTIONS2})
+ endif()
- if(TARGET jsoncpp_lib)
+ if(TARGET PkgConfig::jsoncpp)
+ set(JsonCPP_TARGET jsoncpp)
+ elseif(TARGET jsoncpp_lib)
set(JsonCPP_TARGET jsoncpp_lib)
else()
set(JsonCPP_TARGET jsoncpp_static)
|