blob: 01fc326c36189b5bbb92ac8c21a008a79d4d3d09 (
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
|
# This is the top-level CMakeLists.txt file for the libical project.
#
# Pass the following variables to cmake to control the build:
# (See doc/UsingLibical.txt for more information)
#
# -DWITH_CXX_BINDINGS=[true|false]
# Build the C++ bindings.
# Default=true
#
# -DWITH_BDB=[true|false] [MAY BE BUGGY. DO NOT USE FOR PRODUCTION]
# Build with the optional Berkeley DB storage.
# Requires the Berkeley DB development toolkit pre-installed.
# Default=false
#
# -DICAL_ERRORS_ARE_FATAL=[true|false]
# Set to make icalerror_* calls abort instead of internally signaling an error
# Default=false
# Notes:
# Change the behavior at runtime using the icalerror_set_errors_are_fatal() function.
# Query the behavior at runtime using the icalerror_get_errors_are_fatal() function.
#
# -DICAL_ALLOW_EMPTY_PROPERTIES=[true|false]
# Set to prevent empty properties from being replaced with X-LIC-ERROR properties.
# Default=false
#
# -DUSE_BUILTIN_TZDATA=[true|false]
# Set to build using our own timezone data.
# Default=false (use the system timezone data on non-Windows systems)
# ALWAYS true on Windows systems
#
# -DSTATIC_ONLY=[true|false]
# Set to build static libraries only.
# Turns-off GObject Introspection.
# Default=false (build shared and static libs)
#
# -DSHARED_ONLY=[true|false]
# Set to build shared (dynamic) libraries only.
# Default=false (build shared and static libs)
# Takes precedence over STATIC_ONLY
#
# -DGOBJECT_INTROSPECTION=[true|false]
# Set to build GObject introspection "typelib" files
# Requires GObject Introspection development package v0.6.7 or higher
# Default=false (do not generate the introspection files)
#
# -DICAL_GLIB_VAPI=[true|false]
# Set to build Vala "vapi" files
# Requires Vala package
# Default=false (build the libical-glib interface)
#
# -DICAL_GLIB=[true|false]
# Set to build libical-glib (GObject) interface
# Requires glib development package v2.20 or higher
# Default=true (build the libical-glib interface)
#
# -DUSE_32BIT_TIME_T=[true|false]
# Set to build using a 32bit time_t (ignored unless building with MSVC on Windows)
# Default=false (use the default size of time_t)
#
# -DUSE_INTEROPERABLE_VTIMEZONES=[true|false]
# Set to use inter-operable rather than exact vtimezones.
# Default=false (build exact vtimezones)
# Notes:
# Change the behavior at runtime using the icaltzutil_set_exact_vtimezones_support() function.
# Query the behavior at runtime using the icaltzutil_get_exact_vtimezones_support() function.
#
## Special CMake Options for Developers
#
# -DABI_DUMPER=[true|false]
# Build for the abi-dumper (requires gcc)
# Default=false
#
# -DADDRESS_SANITIZER=[true|false]
# Build with the address sanitizer (requires gcc or clang)
#
cmake_minimum_required(VERSION 3.1.0) #first line, to shutup a cygwin warning
project(libical C CXX)
cmake_policy(SET CMP0003 NEW)
cmake_policy(SET CMP0005 OLD)
if(POLICY CMP0042)
cmake_policy(SET CMP0042 NEW)
endif()
if(POLICY CMP0054)
cmake_policy(SET CMP0054 NEW)
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
enable_testing()
if(WINCE)
find_package(Wcecompat REQUIRED)
include_directories(${WCECOMPAT_INCLUDE_DIR})
set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${WCECOMPAT_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${WCECOMPAT_LIBRARIES})
endif()
set(LIBICAL_LIB_MAJOR_VERSION "2")
set(LIBICAL_LIB_MINOR_VERSION "99")
set(LIBICAL_LIB_PATCH_VERSION "99")
set(LIBICAL_LIB_VERSION_STRING
"${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}.${LIBICAL_LIB_PATCH_VERSION}"
)
set(PROJECT_VERSION "${LIBICAL_LIB_MAJOR_VERSION}.${LIBICAL_LIB_MINOR_VERSION}")
set(PROJECT_URL "http://libical.github.io/libical/")
# compile in Berkeley DB support
option(WITH_BDB "Build in Berkeley DB Support. Requires pre-installed Berkeley DB development toolkit")
if(WITH_BDB)
find_package(BDB)
if(BDB_FOUND)
add_definitions(-DWITH_BDB)
else()
message(FATAL_ERROR "Cannot build the Berkeley DB storage support as requested. Unable to the locate the pre-installed Berkeley DB development toolkit.")
endif()
endif()
# library build types
set(LIBRARY_TYPE SHARED)
option(STATIC_ONLY "Build static libraries only.")
if(STATIC_ONLY)
set(LIBRARY_TYPE STATIC)
endif()
option(SHARED_ONLY "Build shared (dynamic) libraries only. Takes precedence over STATIC_ONLY")
if(SHARED_ONLY)
set(STATIC_ONLY False)
set(LIBRARY_TYPE SHARED)
endif()
# must have Perl to create the derived stuff
find_package(Perl REQUIRED)
# Ensure finding 64bit libs when using 64-bit compilers
if(CMAKE_CL_64)
set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS True)
endif()
# libicu is highly recommended for RSCALE support
# libicu can be found at http://www.icu-project.org
# RSCALE info at http://tools.ietf.org/html/rfc7529
find_package(ICU)
if(ICU_FOUND)
set(REQUIRES_PRIVATE_ICU "Requires.private: icu-i18n") #for libical.pc
set(HAVE_LIBICU 1)
if(ICU_MAJOR_VERSION VERSION_GREATER 50)
set(HAVE_ICU_DANGI TRUE)
else()
set(HAVE_ICU_DANGI FALSE)
endif()
endif()
if(ICU_I18N_FOUND)
set(HAVE_LIBICU_I18N 1)
endif()
# MSVC specific definitions
if(WIN32)
if(MSVC)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DYY_NO_UNISTD_H)
option(USE_32BIT_TIME_T "Build using a 32bit time_t (ignored unless building with MSVC on Windows).")
if(USE_32BIT_TIME_T)
add_definitions(-D_USE_32BIT_TIME_T)
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4290") #C++ exception specification ignored
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4068") #unknown pragma
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4068") #unknown pragma
endif()
add_definitions(-DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DBYTE_ORDER=BIG_ENDIAN)
endif()
# Use GNUInstallDirs
include(GNUInstallDirs)
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} CACHE STRING "Library directory name" FORCE)
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE STRING "Include directory name" FORCE)
set(SHARE_INSTALL_DIR ${CMAKE_INSTALL_DATAROOTDIR} CACHE STRING "Share directory name")
# set the output paths
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
if(WIN32)
set(LIBRARY_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH})
set(LIB_INSTALL_DIR lib)
set(BIN_INSTALL_DIR bin)
else()
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
endif()
if(APPLE)
set(CMAKE_INSTALL_NAME_DIR ${LIB_DESTINATION})
endif()
option(ICAL_ERRORS_ARE_FATAL "icalerror_* calls will abort instead of internally signaling an error.")
if(ICAL_ERRORS_ARE_FATAL)
set(ICAL_ERRORS_ARE_FATAL 1)
else()
set(ICAL_ERRORS_ARE_FATAL 0)
endif()
option(ICAL_ALLOW_EMPTY_PROPERTIES "Prevent empty properties from being replaced with X-LIC-ERROR properties.")
if(ICAL_ALLOW_EMPTY_PROPERTIES)
set(ICAL_ALLOW_EMPTY_PROPERTIES 1)
else()
set(ICAL_ALLOW_EMPTY_PROPERTIES 0)
endif()
option(USE_BUILTIN_TZDATA "build using our own timezone data, else use the system timezone data on non-Windows systems. ALWAYS true on Windows.")
if(USE_BUILTIN_TZDATA)
set(USE_BUILTIN_TZDATA 1)
else()
set(USE_BUILTIN_TZDATA 0)
endif()
if(WIN32 OR WINCE)
#Always use builtin tzdata on Windows systems.
if(NOT USE_BUILTIN_TZDATA)
message(STATUS "Currently unable to use system tzdata on Windows. Falling back to builtin tzdata")
set(USE_BUILTIN_TZDATA 1)
endif()
endif()
option(USE_INTEROPERABLE_VTIMEZONES "use interoperable rather than exact vtimezones." False)
if(USE_INTEROPERABLE_VTIMEZONES)
set(USE_INTEROPERABLE_VTIMEZONES 1)
else()
set(USE_INTEROPERABLE_VTIMEZONES 0)
endif()
include(ConfigureChecks.cmake)
add_definitions(-DHAVE_CONFIG_H)
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
set(INSTALL_TARGETS_DEFAULT_ARGS
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
)
set(MIN_GOBJECT_INTROSPECTION "0.6.7")
option(GOBJECT_INTROSPECTION "Build GObject introspection \"typelib\" files. Requires GObject Introspection development package ${MIN_GOBJECT_INTROSPECTION} or higher.")
if(GOBJECT_INTROSPECTION)
find_package(GObjectIntrospection ${MIN_GOBJECT_INTROSPECTION})
if(INTROSPECTION_FOUND)
set(HAVE_INTROSPECTION TRUE)
if(STATIC_ONLY)
message(FATAL_ERROR "You are attempting to build with GObject Introspection enabled, however that option is not supported when building static libraries only. Please disable the static only option to CMake (-DSTATIC_ONLY=False) if you really want to build with GObject Introspection. Alternatively, you can disable GObject Introspection (by passing -DGOBJECT_INTROSPECTION=False to CMake)")
endif()
else()
message(FATAL_ERROR "You requested to build with GObject Introspection but the necessary development package is missing or too low a version (version ${MIN_GOBJECT_INTROSPECTION} or higher is required)")
endif()
endif()
option(ICAL_GLIB_VAPI "Build Vala \"vapi\" files.")
if(ICAL_GLIB_VAPI)
if(NOT GOBJECT_INTROSPECTION)
message(FATAL_ERROR "You requested to build the Vapi but have not enabled the GObject Introspection, please retry by passing -DGOBJECT_INTROSPECTION=True to CMake")
endif()
find_program(VALAC valac)
if(NOT VALAC)
message(FATAL_ERROR "The valac not found. Install it or disable Vala bindings with -DICAL_GLIB_VAPI=False")
endif()
find_program(VAPIGEN vapigen)
if(NOT VAPIGEN)
message(FATAL_ERROR "The vapigen not found. Install it or disable Vala bindings with -DICAL_GLIB_VAPI=False")
endif()
endif()
set(MIN_GLIB "2.32")
set(MIN_LIBXML "2.7.3")
option(ICAL_GLIB "Build libical-glib interface. Requires glib ${MIN_GLIB} and libxml ${MIN_LIBXML} development packages or higher." True)
if(ICAL_GLIB)
find_package(GLib ${MIN_GLIB})
find_package(LibXML ${MIN_LIBXML})
if(GLIB_FOUND AND LIBXML_FOUND)
set(HAVE_GLIB TRUE)
elseif(GLIB_FOUND)
message(FATAL_ERROR "You requested to build libical-glib, but the necessary development package is missing or too low a version (libxml ${MIN_LIBXML} or higher is required)")
elseif(LIBXML_FOUND)
message(FATAL_ERROR "You requested to build libical-glib, but the necessary development package is missing or too low a version (glib ${MIN_GLIB} or higher is required)")
else()
message(FATAL_ERROR "You requested to build libical-glib, but the necessary development packages are missing or too low a version (glib ${MIN_GLIB} and libxml ${MIN_LIBXML} or higher are required)")
endif()
endif()
#
# Compiler settings
#
if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
include(CheckCCompilerFlag)
check_c_compiler_flag(-Wunused-but-set-variable HAVE_GCC_UNUSED_BUT_SET)
check_c_compiler_flag(-Wlogical-op HAVE_GCC_LOGICAL_OP)
check_c_compiler_flag(-Wsizeof-pointer-memaccess HAVE_GCC_POINTER_MEMACCESS)
check_c_compiler_flag(-Wformat-security HAVE_GCC_FORMAT_SECURITY)
check_c_compiler_flag(-Wredundant-decls HAVE_GCC_REDUNDANT_DECLS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wno-deprecated -Wall -Wno-unknown-pragmas -Wextra -Winit-self -Wmissing-include-dirs -Wunused -Wno-div-by-zero -Wundef -Wpointer-arith -Wtype-limits -Wwrite-strings -Werror=return-type")
if(HAVE_GCC_UNUSED_BUT_SET)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wunused-but-set-variable")
endif()
if(HAVE_GCC_LOGICAL_OP)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wlogical-op")
endif()
if(HAVE_GCC_POINTER_MEMACCESS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wsizeof-pointer-memaccess")
endif()
if(HAVE_GCC_FORMAT_SECURITY)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat -Wformat-security")
endif()
if(HAVE_GCC_REDUNDANT_DECLS)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wredundant-decls")
endif()
if(CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_XOPEN_SOURCE=500 -D_DEFAULT_SOURCE -D_GNU_SOURCE")
endif()
endif()
if("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments")
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag(-Wunused-but-set-variable HAVE_GXX_UNUSED_BUT_SET)
check_cxx_compiler_flag(-Wlogical-op HAVE_GXX_LOGICAL_OP)
check_cxx_compiler_flag(-Wsizeof-pointer-memaccess HAVE_GXX_POINTER_MEMACCESS)
check_cxx_compiler_flag(-Wreorder HAVE_GXX_REORDER)
check_cxx_compiler_flag(-Wformat-security HAVE_GXX_FORMAT_SECURITY)
check_cxx_compiler_flag(-Wredundant-decls HAVE_GXX_REDUNDANT_DECLS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Weffc++ -Wno-deprecated -Wall -Wextra -Woverloaded-virtual -Winit-self -Wmissing-include-dirs -Wunused -Wno-div-by-zero -Wundef -Wpointer-arith -Wtype-limits -Wwrite-strings -Werror=return-type")
if(HAVE_GXX_UNUSED_BUT_SET)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wunused-but-set-variable")
endif()
if(HAVE_GXX_LOGICAL_OP)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wlogical-op")
endif()
if(HAVE_GXX_POINTER_MEMACCESS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsizeof-pointer-memaccess")
endif()
if(HAVE_GXX_REORDER)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wreorder")
endif()
if(HAVE_GXX_FORMAT_SECURITY)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wformat -Wformat-security")
endif()
if(HAVE_GXX_REDUNDANT_DECLS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wredundant-decls")
endif()
if(CMAKE_SYSTEM_NAME MATCHES Linux OR CMAKE_SYSTEM_NAME STREQUAL GNU)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_XOPEN_SOURCE=500 -D_DEFAULT_SOURCE -D_GNU_SOURCE")
endif()
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments")
endif()
################ Developer Options #####################
option(ABI_DUMPER "Build for abi-dumper." False)
if(ABI_DUMPER)
if(CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_C_FLAGS "-g -Og")
set(CMAKE_CXX_FLAGS "-g -Og")
else()
message(FATAL_ERROR
"You are trying to build for the abi-dumper using a non-GCC compiler.")
endif()
endif()
option(ADDRESS_SANITIZER "Build with the address sanitizer." False)
if(ADDRESS_SANITIZER)
if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g")
else()
message(FATAL_ERROR
"You are trying to build with the address sanitizer using a non-GCC or Clang compiler.")
endif()
if(GOBJECT_INTROSPECTION)
message(STATUS "Warning: Building the address sanitizer with GObject Introspection is is not supported. Turning-off GObject Introspection")
set(HAVE_INTROSPECTION False)
endif()
if(ICAL_GLIB)
message(STATUS "Warning: Building the address sanitizer with the GObject interface is not supported. Turning-off the GObject interface")
set(ICAL_GLIB False)
endif()
endif()
########################################################
option(WITH_CXX_BINDINGS "Build the C++ bindings." True)
if(WITH_CXX_BINDINGS)
add_definitions(-DWITH_CXX_BINDINGS)
endif()
#some test programs need to know if we are using 32-bit time
if(SIZEOF_TIME_T EQUAL 4)
set(USE_32BIT_TIME_T TRUE)
endif()
if(WIN32 AND MSVC)
if(SIZEOF_SIZE_T LESS SIZEOF_TIME_T)
unset(SIZEOF_SIZE_T CACHE)
unset(SIZEOF_TIME_T CACHE)
message(FATAL_ERROR
"You are using a Microsoft Visual 32-bit compiler with 64-bit time."
"Run cmake again with the \"-DUSE_32BIT_TIME_T=true\" command line option."
)
endif()
endif()
################# build subdirs ########################
add_subdirectory(design-data)
add_subdirectory(doc)
add_subdirectory(scripts)
add_subdirectory(test-data)
add_subdirectory(src)
add_subdirectory(examples)
if(USE_BUILTIN_TZDATA)
# use our zoneinfo if cmake is passed -DUSE_BUILTIN_TZDATA
add_subdirectory(zoneinfo)
endif()
########### create and install pkg-config file #########
set(VERSION "${LIBICAL_LIB_VERSION_STRING}")
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "\${prefix}")
set(libdir "\${exec_prefix}/lib")
set(includedir "\${prefix}/include")
set(PTHREAD_LIBS "${CMAKE_THREAD_LIBS_INIT}")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/libical.pc.in
${CMAKE_CURRENT_BINARY_DIR}/libical.pc
@ONLY
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libical.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig)
########### Create and install the CMake Config files ##########
include(CMakePackageConfigHelpers)
configure_package_config_file(
LibIcalConfig.cmake.in ${libical_BINARY_DIR}/LibIcalConfig.cmake
INSTALL_DESTINATION ${LIB_INSTALL_DIR}/cmake/LibIcal
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR
)
# Create a version file
write_basic_package_version_file(
${libical_BINARY_DIR}/LibIcalConfigVersion.cmake
VERSION ${LIBICAL_LIB_VERSION_STRING}
COMPATIBILITY SameMajorVersion
)
install(
FILES ${libical_BINARY_DIR}/LibIcalConfigVersion.cmake ${libical_BINARY_DIR}/LibIcalConfig.cmake
DESTINATION ${LIB_INSTALL_DIR}/cmake/LibIcal
)
install(
EXPORT icalTargets
DESTINATION ${LIB_INSTALL_DIR}/cmake/LibIcal
FILE LibIcalTargets.cmake
)
|