Skip to content

Commit 38be76a

Browse files
olliwangriegl-gc
authored andcommitted
hunter: make ZLIB play nice with Hunter, cmake config
- Teach ZLIB respect `BUILD_SHARED_LIBS` - Set version in command 'project' - Use configure_package_config_file - Install `ZLIBconfig.cmake` - Add ZLIB::ZLIB ALIAS target
1 parent 51b7f2a commit 38be76a

File tree

2 files changed

+63
-12
lines changed

2 files changed

+63
-12
lines changed

CMakeLists.txt

Lines changed: 50 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
cmake_minimum_required(VERSION 2.4.4...3.15.0)
22
set(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

88
option(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)
150150
endif(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})
156153
set_target_properties(zlib PROPERTIES DEFINE_SYMBOL ZLIB_DLL)
157154
set_target_properties(zlib PROPERTIES SOVERSION 1)
158155

@@ -169,7 +166,7 @@ endif()
169166

170167
if(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")
179176
endif()
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+
)
186224
endif()
187225
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL )
188226
install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")

cmake/Config.cmake.in

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
4+
check_required_components("@PROJECT_NAME@")
5+
6+
if(NOT TARGET ZLIB::ZLIB)
7+
set_target_properties(
8+
ZLIB::zlib
9+
PROPERTIES
10+
IMPORTED_GLOBAL True
11+
)
12+
add_library(ZLIB::ZLIB ALIAS ZLIB::zlib)
13+
endif()

0 commit comments

Comments
 (0)