Skip to content

Commit 1261dfa

Browse files
committed
Modified cmake script to support shared library mode and find_package.
1 parent ea41268 commit 1261dfa

File tree

2 files changed

+62
-4
lines changed

2 files changed

+62
-4
lines changed

CMakeLists.txt

+61-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
PROJECT(miniz C)
2-
cmake_minimum_required(VERSION 2.8)
2+
cmake_minimum_required(VERSION 3.4)
3+
4+
set(Upstream_VERSION 2.1.0)
5+
36
if(CMAKE_BUILD_TYPE STREQUAL "")
47
# CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up
58
# differentiation between debug and release builds.
@@ -11,6 +14,7 @@ endif ()
1114
option(BUILD_EXAMPLES "Build examples" ON)
1215
option(AMALGAMATE_SOURCES "Amalgamate sources into miniz.h/c" OFF)
1316
option(BUILD_HEADER_ONLY "Build a header-only version" OFF)
17+
option(BUILD_SHARED_LIBS "Build shared library instead of static" ON)
1418

1519
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
1620

@@ -65,13 +69,65 @@ if(AMALGAMATE_SOURCES)
6569
endif(BUILD_HEADER_ONLY)
6670
set(INSTALL_HEADERS ${CMAKE_BINARY_DIR}/amalgamation/miniz.h)
6771
else(AMALGAMATE_SOURCES)
72+
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
6873
set(miniz_SOURCE miniz.c miniz_zip.c miniz_tinfl.c miniz_tdef.c)
6974
add_library(${PROJECT_NAME} ${miniz_SOURCE})
70-
target_include_directories(${PROJECT_NAME} PUBLIC
71-
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
72-
$<INSTALL_INTERFACE:include>
75+
76+
set_property(TARGET ${PROJECT_NAME} PROPERTY VERSION ${Upstream_VERSION})
77+
set_property(TARGET ${PROJECT_NAME} PROPERTY SOVERSION 2)
78+
set_property(TARGET ${PROJECT_NAME} PROPERTY
79+
INTERFACE_${PROJECT_NAME}_MAJOR_VERSION 2)
80+
set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY
81+
COMPATIBLE_INTERFACE_STRING ${PROJECT_NAME}_MAJOR_VERSION
7382
)
83+
84+
# target_include_directories(${PROJECT_NAME} PUBLIC
85+
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
86+
# $<INSTALL_INTERFACE:include>
87+
# )
7488
file(GLOB INSTALL_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
89+
90+
install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
91+
RUNTIME DESTINATION bin
92+
ARCHIVE DESTINATION lib
93+
LIBRARY DESTINATION lib
94+
INCLUDES DESTINATION include
95+
)
96+
97+
include(CMakePackageConfigHelpers)
98+
write_basic_package_version_file(
99+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
100+
VERSION ${Upstream_VERSION}
101+
COMPATIBILITY AnyNewerVersion
102+
)
103+
104+
export(EXPORT ${PROJECT_NAME}Targets
105+
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Targets.cmake"
106+
NAMESPACE ${PROJECT_NAME}::
107+
)
108+
configure_file(Config.cmake.in
109+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake"
110+
@ONLY
111+
)
112+
113+
set(ConfigPackageLocation lib/cmake/${PROJECT_NAME})
114+
install(EXPORT ${PROJECT_NAME}Targets
115+
FILE
116+
${PROJECT_NAME}Targets.cmake
117+
NAMESPACE
118+
${PROJECT_NAME}::
119+
DESTINATION
120+
${ConfigPackageLocation}
121+
)
122+
install(
123+
FILES
124+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake"
125+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake"
126+
DESTINATION
127+
${ConfigPackageLocation}
128+
COMPONENT
129+
Devel
130+
)
75131
endif(AMALGAMATE_SOURCES)
76132

77133
if(BUILD_EXAMPLES)
@@ -108,3 +164,4 @@ endif(BUILD_EXAMPLES)
108164
set(INCLUDE_INSTALL_DIR "include")
109165

110166
install(FILES ${INSTALL_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME})
167+

Config.cmake.in

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")

0 commit comments

Comments
 (0)