1
1
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
+
3
6
if (CMAKE_BUILD_TYPE STREQUAL "" )
4
7
# CMake defaults to leaving CMAKE_BUILD_TYPE empty. This screws up
5
8
# differentiation between debug and release builds.
@@ -11,6 +14,7 @@ endif ()
11
14
option (BUILD_EXAMPLES "Build examples" ON )
12
15
option (AMALGAMATE_SOURCES "Amalgamate sources into miniz.h/c" OFF )
13
16
option (BUILD_HEADER_ONLY "Build a header-only version" OFF )
17
+ option (BUILD_SHARED_LIBS "Build shared library instead of static" ON )
14
18
15
19
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR} /bin)
16
20
@@ -65,13 +69,65 @@ if(AMALGAMATE_SOURCES)
65
69
endif (BUILD_HEADER_ONLY)
66
70
set (INSTALL_HEADERS ${CMAKE_BINARY_DIR} /amalgamation/miniz.h)
67
71
else (AMALGAMATE_SOURCES)
72
+ set (CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON )
68
73
set (miniz_SOURCE miniz.c miniz_zip.c miniz_tinfl.c miniz_tdef.c)
69
74
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
73
82
)
83
+
84
+ # target_include_directories(${PROJECT_NAME} PUBLIC
85
+ # $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
86
+ # $<INSTALL_INTERFACE:include>
87
+ # )
74
88
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
+ )
75
131
endif (AMALGAMATE_SOURCES)
76
132
77
133
if (BUILD_EXAMPLES)
@@ -108,3 +164,4 @@ endif(BUILD_EXAMPLES)
108
164
set (INCLUDE_INSTALL_DIR "include" )
109
165
110
166
install (FILES ${INSTALL_HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR} /${PROJECT_NAME} )
167
+
0 commit comments