1
1
cmake_minimum_required (VERSION 2.4.4...3.15.0)
2
2
set (CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON )
3
3
4
- project (zlib C)
4
+ project (ZLIB VERSION "1.3.1" LANGUAGES C)
5
5
6
- set (VERSION "1.3.1 " )
6
+ set (VERSION "${PROJECT_VERSION} " )
7
7
8
8
option (ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" ON )
9
9
@@ -149,10 +149,7 @@ if(MINGW)
149
149
set (ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR} /zlib1rc.obj)
150
150
endif (MINGW)
151
151
152
- add_library (zlib SHARED ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS} )
153
- target_include_directories (zlib PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
154
- add_library (zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS} )
155
- target_include_directories (zlibstatic PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
152
+ add_library (zlib ${ZLIB_SRCS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS} )
156
153
set_target_properties (zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
157
154
set_target_properties (zlib PROPERTIES SOVERSION 1)
158
155
@@ -169,7 +166,7 @@ endif()
169
166
170
167
if (UNIX )
171
168
# On unix-like platforms the library is almost always called libz
172
- set_target_properties (zlib zlibstatic PROPERTIES OUTPUT_NAME z)
169
+ set_target_properties (zlib PROPERTIES OUTPUT_NAME z)
173
170
if (NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX))
174
171
set_target_properties (zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\" ${CMAKE_CURRENT_SOURCE_DIR} /zlib.map\" " )
175
172
endif ()
@@ -178,11 +175,52 @@ elseif(BUILD_SHARED_LIBS AND WIN32)
178
175
set_target_properties (zlib PROPERTIES SUFFIX "1.dll" )
179
176
endif ()
180
177
181
- if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
182
- install (TARGETS zlib zlibstatic
183
- RUNTIME DESTINATION "${INSTALL_BIN_DIR} "
184
- ARCHIVE DESTINATION "${INSTALL_LIB_DIR} "
185
- LIBRARY DESTINATION "${INSTALL_LIB_DIR} " )
178
+ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
179
+ # Installation (https://github.com/forexample/package-example)
180
+
181
+ set (config_install_dir "lib/cmake/${PROJECT_NAME} " )
182
+ set (include_install_dir "include" )
183
+
184
+ set (generated_dir "${CMAKE_CURRENT_BINARY_DIR} /generated" )
185
+
186
+ set (version_config "${generated_dir} /${PROJECT_NAME} ConfigVersion.cmake" )
187
+ set (project_config "${generated_dir} /${PROJECT_NAME} Config.cmake" )
188
+ set (targets_export_name "${PROJECT_NAME} Targets" )
189
+ set (namespace "${PROJECT_NAME} ::" )
190
+
191
+ include (CMakePackageConfigHelpers)
192
+
193
+ # Note: PROJECT_VERSION is used as a VERSION
194
+ write_basic_package_version_file(
195
+ "${version_config} " COMPATIBILITY SameMajorVersion
196
+ )
197
+
198
+ # Note: variable 'targets_export_name' used
199
+ configure_package_config_file(
200
+ "cmake/Config.cmake.in"
201
+ "${project_config} "
202
+ INSTALL_DESTINATION "${config_install_dir} "
203
+ )
204
+
205
+ install (
206
+ TARGETS zlib
207
+ EXPORT "${targets_export_name} "
208
+ LIBRARY DESTINATION "lib"
209
+ ARCHIVE DESTINATION "lib"
210
+ RUNTIME DESTINATION "bin"
211
+ INCLUDES DESTINATION "${include_install_dir} "
212
+ )
213
+
214
+ install (
215
+ FILES "${project_config} " "${version_config} "
216
+ DESTINATION "${config_install_dir} "
217
+ )
218
+
219
+ install (
220
+ EXPORT "${targets_export_name} "
221
+ NAMESPACE "${namespace} "
222
+ DESTINATION "${config_install_dir} "
223
+ )
186
224
endif ()
187
225
if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
188
226
install (FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR} " )
0 commit comments