11cmake_minimum_required (VERSION 2.4.4...3.15.0)
22set (CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON )
33
4- project (zlib C)
4+ project (ZLIB VERSION "1.3.1" LANGUAGES C)
55
6- set (VERSION "1.3.1 " )
6+ set (VERSION "${PROJECT_VERSION} " )
77
88option (ZLIB_BUILD_EXAMPLES "Enable Zlib Examples" ON )
99
@@ -149,10 +149,7 @@ if(MINGW)
149149 set (ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR} /zlib1rc.obj)
150150endif (MINGW)
151151
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} )
156153set_target_properties (zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
157154set_target_properties (zlib PROPERTIES SOVERSION 1)
158155
@@ -169,7 +166,7 @@ endif()
169166
170167if (UNIX )
171168 # 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)
173170 if (NOT APPLE AND NOT (CMAKE_SYSTEM_NAME STREQUAL AIX))
174171 set_target_properties (zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\" ${CMAKE_CURRENT_SOURCE_DIR} /zlib.map\" " )
175172 endif ()
@@ -178,11 +175,52 @@ elseif(BUILD_SHARED_LIBS AND WIN32)
178175 set_target_properties (zlib PROPERTIES SUFFIX "1.dll" )
179176endif ()
180177
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+ )
186224endif ()
187225if (NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
188226 install (FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR} " )
0 commit comments