@@ -5,12 +5,14 @@ project(LetMeCreate)
5
5
6
6
set (LETMECREATE_MAJOR_VERSION 1 )
7
7
set (LETMECREATE_MINOR_VERSION 5 )
8
- set (LETMECREATE_PATCH_VERSION 1 )
8
+ set (LETMECREATE_PATCH_VERSION 2 )
9
9
set (LETMECREATE_VERSION ${LETMECREATE_MAJOR_VERSION} .${LETMECREATE_MINOR_VERSION}.${LETMECREATE_PATCH_VERSION} )
10
10
set (PROJECT_VERSION ${LETMECREATE_VERSION} )
11
11
12
12
option (BUILD_EXAMPLES "Build examples" OFF )
13
13
option (BUILD_TESTS "Build tests" OFF )
14
+ option (BUILD_SHARED "Build shared libraries" ON )
15
+ option (BUILD_STATIC "Build static libraries" ON )
14
16
15
17
file (GLOB bosch_srcs src/bosch/*.c )
16
18
file (GLOB core_srcs src/core/*.c )
@@ -25,30 +27,38 @@ file(GLOB rpisensehat_hdrs include/letmecreate/rpisensehat/*.h)
25
27
include_directories (include )
26
28
27
29
# Create targets
28
- add_library (letmecreate_core SHARED ${core_srcs} ${core_hdrs} )
29
- add_library (letmecreate_click SHARED ${click_srcs} ${click_hdrs} )
30
- add_library (letmecreate_bosch SHARED ${bosch_srcs} ${bosch_hdrs} )
31
- add_library (letmecreate_rpisensehat SHARED ${rpisensehat_srcs} ${rpisensehat_hdrs} )
32
- target_link_libraries (letmecreate_core pthread )
33
- target_link_libraries (letmecreate_click letmecreate_core letmecreate_bosch )
34
- target_link_libraries (letmecreate_rpisensehat letmecreate_core )
35
-
36
- # Export symbols
37
- include (GenerateExportHeader )
38
- generate_export_header (letmecreate_bosch EXPORT_FILE_NAME "include/letmecreate/bosch/export.h" )
39
- generate_export_header (letmecreate_core EXPORT_FILE_NAME "include/letmecreate/core/export.h" )
40
- generate_export_header (letmecreate_click EXPORT_FILE_NAME "include/letmecreate/click/export.h" )
41
- generate_export_header (letmecreate_rpisensehat EXPORT_FILE_NAME "include/letmecreate/rpisensehat/export.h" )
42
- set_target_properties (letmecreate_bosch PROPERTIES C_VISIBILITY_PRESET hidden )
43
- set_target_properties (letmecreate_core PROPERTIES C_VISIBILITY_PRESET hidden )
44
- set_target_properties (letmecreate_click PROPERTIES C_VISIBILITY_PRESET hidden )
45
- set_target_properties (letmecreate_rpisensehat PROPERTIES C_VISIBILITY_PRESET hidden )
30
+ if (BUILD_SHARED )
31
+ add_library (letmecreate_core SHARED ${core_srcs} ${core_hdrs} )
32
+ add_library (letmecreate_click SHARED ${click_srcs} ${click_hdrs} )
33
+ add_library (letmecreate_bosch SHARED ${bosch_srcs} ${bosch_hdrs} )
34
+ add_library (letmecreate_rpisensehat SHARED ${rpisensehat_srcs} ${rpisensehat_hdrs} )
35
+ target_link_libraries (letmecreate_core pthread )
36
+ target_link_libraries (letmecreate_click letmecreate_core letmecreate_bosch )
37
+ target_link_libraries (letmecreate_rpisensehat letmecreate_core )
38
+ # Export symbols
39
+ include (GenerateExportHeader )
40
+ generate_export_header (letmecreate_bosch EXPORT_FILE_NAME "include/letmecreate/bosch/export.h" )
41
+ generate_export_header (letmecreate_core EXPORT_FILE_NAME "include/letmecreate/core/export.h" )
42
+ generate_export_header (letmecreate_click EXPORT_FILE_NAME "include/letmecreate/click/export.h" )
43
+ generate_export_header (letmecreate_rpisensehat EXPORT_FILE_NAME "include/letmecreate/rpisensehat/export.h" )
44
+ set_target_properties (letmecreate_bosch PROPERTIES C_VISIBILITY_PRESET hidden )
45
+ set_target_properties (letmecreate_core PROPERTIES C_VISIBILITY_PRESET hidden )
46
+ set_target_properties (letmecreate_click PROPERTIES C_VISIBILITY_PRESET hidden )
47
+ set_target_properties (letmecreate_rpisensehat PROPERTIES C_VISIBILITY_PRESET hidden )
48
+ endif ()
49
+
50
+ if (BUILD_STATIC )
51
+ add_library (letmecreate_core_s STATIC ${core_srcs} ${core_hdrs} )
52
+ add_library (letmecreate_click_s STATIC ${click_srcs} ${click_hdrs} )
53
+ add_library (letmecreate_bosch_s STATIC ${bosch_srcs} ${bosch_hdrs} )
54
+ add_library (letmecreate_rpisensehat_s STATIC ${rpisensehat_srcs} ${rpisensehat_hdrs} )
55
+ endif ()
46
56
47
57
# Enable warnings
48
58
set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wall -Wextra -ggdb3" )
49
59
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wall -Wextra -O2" )
50
60
51
-
61
+ if ( BUILD_SHARED )
52
62
target_include_directories (
53
63
letmecreate_core PUBLIC
54
64
"$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
@@ -69,6 +79,30 @@ target_include_directories(
69
79
"$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
70
80
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
71
81
)
82
+ endif ()
83
+
84
+ if (BUILD_STATIC )
85
+ target_include_directories (
86
+ letmecreate_core_s PUBLIC
87
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
88
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
89
+ )
90
+ target_include_directories (
91
+ letmecreate_click_s PUBLIC
92
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
93
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
94
+ )
95
+ target_include_directories (
96
+ letmecreate_bosch_s PUBLIC
97
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
98
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
99
+ )
100
+ target_include_directories (
101
+ letmecreate_rpisensehat_s PUBLIC
102
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>"
103
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} >"
104
+ )
105
+ endif ()
72
106
73
107
74
108
set (config_install_dir "lib/cmake/${PROJECT_NAME} " )
@@ -94,6 +128,7 @@ configure_package_config_file(
94
128
INSTALL_DESTINATION "${config_install_dir} "
95
129
)
96
130
131
+ if (BUILD_SHARED )
97
132
install (
98
133
TARGETS letmecreate_core letmecreate_click letmecreate_bosch letmecreate_rpisensehat
99
134
EXPORT "${targets_export_name} "
@@ -102,6 +137,19 @@ install(
102
137
RUNTIME DESTINATION "bin"
103
138
INCLUDES DESTINATION "${include_install_dir} "
104
139
)
140
+ endif ()
141
+
142
+ if (BUILD_STATIC )
143
+ install (
144
+ TARGETS letmecreate_core_s letmecreate_click_s letmecreate_bosch_s letmecreate_rpisensehat_s
145
+ EXPORT "${targets_export_name} "
146
+ LIBRARY DESTINATION "lib"
147
+ ARCHIVE DESTINATION "lib"
148
+ RUNTIME DESTINATION "bin"
149
+ INCLUDES DESTINATION "${include_install_dir} "
150
+ )
151
+ endif ()
152
+
105
153
106
154
install (
107
155
DIRECTORY "include/letmecreate"
0 commit comments