Skip to content

Commit 1791dcc

Browse files
committed
Added CMake "install" target (closes bblanchon#1209)
1 parent 40d1cfe commit 1791dcc

File tree

21 files changed

+173
-17
lines changed

21 files changed

+173
-17
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ HEAD
77
* Fixed "maybe-uninitialized" warning (issue #1217)
88
* Fixed "statement is unreachable" warning on IAR (issue #1233)
99
* Fixed "pointless integer comparison" warning on IAR (issue #1233)
10+
* Added CMake "install" target (issue #1209)
1011

1112
v6.15.0 (2020-03-22)
1213
-------

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
cmake_minimum_required(VERSION 3.0)
66
project(ArduinoJson)
77

8+
set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true)
9+
810
enable_testing()
911

1012
add_definitions(-DARDUINOJSON_DEBUG=1)
@@ -37,6 +39,6 @@ if(${COVERAGE})
3739
set(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage")
3840
endif()
3941

40-
include_directories(${CMAKE_CURRENT_LIST_DIR}/src)
42+
add_subdirectory(src)
4143
add_subdirectory(extras/tests)
4244
add_subdirectory(extras/fuzzing)

extras/ArduinoJsonConfig.cmake.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
4+
check_required_components("@PROJECT_NAME@")

extras/fuzzing/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,14 @@ add_executable(msgpack_fuzzer
1010
msgpack_fuzzer.cpp
1111
fuzzer_main.cpp
1212
)
13+
target_link_libraries(msgpack_fuzzer
14+
ArduinoJson
15+
)
1316

1417
add_executable(json_fuzzer
1518
json_fuzzer.cpp
1619
fuzzer_main.cpp
1720
)
21+
target_link_libraries(json_fuzzer
22+
ArduinoJson
23+
)

extras/tests/ElementProxy/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,9 @@ add_executable(ElementProxyTests
1111
size.cpp
1212
)
1313

14-
target_link_libraries(ElementProxyTests catch)
14+
target_link_libraries(ElementProxyTests
15+
ArduinoJson
16+
catch
17+
)
18+
1519
add_test(ElementProxy ElementProxyTests)

extras/tests/IntegrationTests/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,9 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
1616
)
1717
endif()
1818

19-
target_link_libraries(IntegrationTests catch)
19+
target_link_libraries(IntegrationTests
20+
ArduinoJson
21+
catch
22+
)
23+
2024
add_test(IntegrationTests IntegrationTests)

extras/tests/JsonArray/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,9 @@ add_executable(JsonArrayTests
1919
undefined.cpp
2020
)
2121

22-
target_link_libraries(JsonArrayTests catch)
22+
target_link_libraries(JsonArrayTests
23+
ArduinoJson
24+
catch
25+
)
26+
2327
add_test(JsonArray JsonArrayTests)

extras/tests/JsonDeserializer/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ add_executable(JsonDeserializerTests
1818
string.cpp
1919
)
2020

21-
target_link_libraries(JsonDeserializerTests catch)
21+
target_link_libraries(JsonDeserializerTests
22+
ArduinoJson
23+
catch
24+
)
25+
2226
set_target_properties(JsonDeserializerTests PROPERTIES UNITY_BUILD OFF)
2327

2428
add_test(JsonDeserializer JsonDeserializerTests)

extras/tests/JsonDocument/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,9 @@ add_executable(JsonDocumentTests
1818
subscript.cpp
1919
)
2020

21-
target_link_libraries(JsonDocumentTests catch)
21+
target_link_libraries(JsonDocumentTests
22+
ArduinoJson
23+
catch
24+
)
25+
2226
add_test(JsonDocument JsonDocumentTests)

extras/tests/JsonObject/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,9 @@ add_executable(JsonObjectTests
1919
subscript.cpp
2020
)
2121

22-
target_link_libraries(JsonObjectTests catch)
22+
target_link_libraries(JsonObjectTests
23+
ArduinoJson
24+
catch
25+
)
26+
2327
add_test(JsonObject JsonObjectTests)

extras/tests/JsonSerializer/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,9 @@ add_executable(JsonSerializerTests
1414
std_string.cpp
1515
)
1616

17-
target_link_libraries(JsonSerializerTests catch)
17+
target_link_libraries(JsonSerializerTests
18+
ArduinoJson
19+
catch
20+
)
21+
1822
add_test(JsonSerializer JsonSerializerTests)

extras/tests/JsonVariant/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,9 @@ add_executable(JsonVariantTests
2424
undefined.cpp
2525
)
2626

27-
target_link_libraries(JsonVariantTests catch)
27+
target_link_libraries(JsonVariantTests
28+
ArduinoJson
29+
catch
30+
)
31+
2832
add_test(JsonVariant JsonVariantTests)

extras/tests/MemberProxy/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,9 @@ add_executable(MemberProxyTests
1313
subscript.cpp
1414
)
1515

16-
target_link_libraries(MemberProxyTests catch)
16+
target_link_libraries(MemberProxyTests
17+
ArduinoJson
18+
catch
19+
)
20+
1721
add_test(MemberProxy MemberProxyTests)

extras/tests/MemoryPool/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,9 @@ add_executable(MemoryPoolTests
1010
StringBuilder.cpp
1111
)
1212

13-
target_link_libraries(MemoryPoolTests catch)
13+
target_link_libraries(MemoryPoolTests
14+
ArduinoJson
15+
catch
16+
)
17+
1418
add_test(MemoryPool MemoryPoolTests)

extras/tests/Misc/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ add_executable(MiscTests
1515
version.cpp
1616
)
1717

18-
target_link_libraries(MiscTests catch)
18+
target_link_libraries(MiscTests
19+
ArduinoJson
20+
catch
21+
)
22+
1923
set_target_properties(MiscTests PROPERTIES UNITY_BUILD OFF)
2024

2125
add_test(Misc MiscTests)

extras/tests/MixedConfiguration/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@ add_executable(MixedConfigurationTests
2222
enable_comments_0.cpp
2323
)
2424

25-
target_link_libraries(MixedConfigurationTests catch)
25+
target_link_libraries(MixedConfigurationTests
26+
ArduinoJson
27+
catch
28+
)
29+
2630
set_target_properties(MixedConfigurationTests PROPERTIES UNITY_BUILD OFF)
2731

2832
add_test(MixedConfiguration MixedConfigurationTests)

extras/tests/MsgPackDeserializer/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,9 @@ add_executable(MsgPackDeserializerTests
1414
notSupported.cpp
1515
)
1616

17-
target_link_libraries(MsgPackDeserializerTests catch)
17+
target_link_libraries(MsgPackDeserializerTests
18+
ArduinoJson
19+
catch
20+
)
21+
1822
add_test(MsgPackDeserializer MsgPackDeserializerTests)

extras/tests/MsgPackSerializer/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,9 @@ add_executable(MsgPackSerializerTests
1111
serializeVariant.cpp
1212
)
1313

14-
target_link_libraries(MsgPackSerializerTests catch)
14+
target_link_libraries(MsgPackSerializerTests
15+
ArduinoJson
16+
catch
17+
)
18+
1519
add_test(MsgPackSerializer MsgPackSerializerTests)

extras/tests/Numbers/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ add_executable(NumbersTests
88
parseNumber.cpp
99
)
1010

11-
target_link_libraries(NumbersTests catch)
11+
target_link_libraries(NumbersTests
12+
ArduinoJson
13+
catch
14+
)
15+
1216

1317
add_test(Numbers NumbersTests)

extras/tests/TextFormatter/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ add_executable(TextFormatterTests
77
writeString.cpp
88
)
99

10-
target_link_libraries(TextFormatterTests catch)
10+
target_link_libraries(TextFormatterTests
11+
ArduinoJson
12+
catch
13+
)
14+
1115
set_target_properties(TextFormatterTests PROPERTIES UNITY_BUILD OFF)
1216

1317
add_test(TextFormatter TextFormatterTests)

src/CMakeLists.txt

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# ArduinoJson - arduinojson.org
2+
# Copyright Benoit Blanchon 2014-2020
3+
# MIT License
4+
5+
# I have no idea what this is about, I simply followed the instructions from:
6+
# https://dominikberner.ch/cmake-interface-lib/
7+
8+
add_library(ArduinoJson INTERFACE)
9+
10+
include(GNUInstallDirs)
11+
12+
# Adding the install interface generator expression makes sure that the include
13+
# files are installed to the proper location (provided by GNUInstallDirs)
14+
target_include_directories(ArduinoJson
15+
INTERFACE
16+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
17+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
18+
)
19+
20+
# locations are provided by GNUInstallDirs
21+
install(
22+
TARGETS
23+
ArduinoJson
24+
EXPORT
25+
ArduinoJson_Targets
26+
ARCHIVE DESTINATION
27+
${CMAKE_INSTALL_LIBDIR}
28+
LIBRARY DESTINATION
29+
${CMAKE_INSTALL_LIBDIR}
30+
RUNTIME DESTINATION
31+
${CMAKE_INSTALL_BINDIR}
32+
)
33+
34+
include(CMakePackageConfigHelpers)
35+
write_basic_package_version_file(
36+
"${PROJECT_BINARY_DIR}/ArduinoJsonConfigVersion.cmake"
37+
VERSION
38+
6.15.0
39+
COMPATIBILITY
40+
SameMajorVersion
41+
)
42+
43+
configure_package_config_file(
44+
"${PROJECT_SOURCE_DIR}/extras/ArduinoJsonConfig.cmake.in"
45+
"${PROJECT_BINARY_DIR}/ArduinoJsonConfig.cmake"
46+
INSTALL_DESTINATION
47+
${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake)
48+
49+
install(
50+
EXPORT
51+
ArduinoJson_Targets
52+
FILE
53+
ArduinoJsonTargets.cmake
54+
DESTINATION
55+
${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake
56+
)
57+
58+
install(
59+
FILES
60+
"${PROJECT_BINARY_DIR}/ArduinoJsonConfig.cmake"
61+
"${PROJECT_BINARY_DIR}/ArduinoJsonConfigVersion.cmake"
62+
DESTINATION
63+
"${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake"
64+
)
65+
66+
install(
67+
FILES
68+
ArduinoJson.h
69+
ArduinoJson.hpp
70+
DESTINATION
71+
include
72+
)
73+
74+
install(
75+
DIRECTORY
76+
"${CMAKE_CURRENT_SOURCE_DIR}/ArduinoJson"
77+
DESTINATION
78+
include
79+
)

0 commit comments

Comments
 (0)