@@ -2,33 +2,58 @@ cmake_minimum_required(VERSION 3.4)
2
2
3
3
option (BUILD_OPUSURL "Build opusurl library" ON )
4
4
5
- project (opusfile C)
6
-
7
- if (MSVC )
8
- set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4267 /wd4244 /wd4090" )
5
+ option (HUNTER_ENABLED "Enable Hunter package manager" OFF )
6
+
7
+ if (HUNTER_ENABLED)
8
+ include (cmake/HunterGate.cmake)
9
+ HunterGate(
10
+ URL "https://github.com/cpp-pm/hunter/archive/v0.23.264.tar.gz"
11
+ SHA1 "45ab668f0923fc3ace807a34d971e34ce7428dfd"
12
+ )
9
13
endif ()
10
14
11
- find_path (OGG_INCLUDE_DIR ogg/ogg.h)
12
- find_library (OGG_LIBRARY ogg)
13
15
14
- find_path (OPUS_INCLUDE_DIR opus.h PATH_SUFFIXES opus)
15
- find_library (OPUS_LIBRARY opus)
16
+ project (opusfile VERSION 0.12 LANGUAGES C)
17
+
18
+ if (HUNTER_ENABLED)
19
+ hunter_add_package(libogg)
20
+ find_package (libogg CONFIG REQUIRED)
21
+ set (OGG_LIBRARY libogg::ogg)
22
+ get_target_property (OGG_INCLUDE_DIR libogg::ogg INTERFACE_INCLUDE_DIRECTORIES )
23
+
24
+ hunter_add_package(Opus)
25
+ find_package (Opus CONFIG REQUIRED)
26
+ set (OPUS_LIBRARY Opus::opus)
27
+ get_target_property (OPUS_INCLUDE_DIR Opus::opus INTERFACE_INCLUDE_DIRECTORIES )
28
+ set (OPUS_INCLUDE_DIR ${OPUS_INCLUDE_DIR} ${OPUS_INCLUDE_DIR} /opus)
29
+ else ()
30
+ find_path (OGG_INCLUDE_DIR ogg/ogg.h)
31
+ find_library (OGG_LIBRARY ogg)
32
+
33
+ find_path (OPUS_INCLUDE_DIR opus.h PATH_SUFFIXES opus)
34
+ find_library (OPUS_LIBRARY opus)
35
+ endif ()
16
36
17
37
add_library (opusfile
18
38
src/info.c
19
39
src/internal .c
20
40
src/opusfile.c
21
41
src/stream.c)
22
42
43
+ if (MSVC )
44
+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4267 /wd4244 /wd4090" )
45
+ endif ()
46
+
23
47
target_include_directories (opusfile PRIVATE include PUBLIC ${OGG_INCLUDE_DIR} ${OPUS_INCLUDE_DIR} )
24
48
target_link_libraries (opusfile PRIVATE ${OGG_LIBRARY} ${OPUS_LIBRARY} )
25
49
26
- install (TARGETS opusfile
27
- RUNTIME DESTINATION bin
28
- LIBRARY DESTINATION lib
29
- ARCHIVE DESTINATION lib)
50
+ set (INSTALL_TARGETS opusfile)
30
51
31
52
if (BUILD_OPUSURL)
53
+ if (HUNTER_ENABLED)
54
+ hunter_add_package(OpenSSL)
55
+ endif ()
56
+
32
57
find_package (OpenSSL MODULE REQUIRED)
33
58
34
59
set (opusurl_src
@@ -50,11 +75,50 @@ if(BUILD_OPUSURL)
50
75
target_link_libraries (opusurl PRIVATE ws2_32.lib crypt32.lib)
51
76
endif ()
52
77
53
- install (TARGETS opusurl
54
- RUNTIME DESTINATION bin
55
- LIBRARY DESTINATION lib
56
- ARCHIVE DESTINATION lib)
78
+ list (APPEND INSTALL_TARGETS opusurl)
57
79
endif ()
58
80
59
- install (FILES include /opusfile.h
60
- DESTINATION include /opus)
81
+ include (GNUInstallDirs)
82
+ include (CMakePackageConfigHelpers)
83
+
84
+ set (config_install_dir "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} " )
85
+ set (generated_dir "${CMAKE_CURRENT_BINARY_DIR} /generated" )
86
+ set (version_config "${generated_dir} /${PROJECT_NAME} ConfigVersion.cmake" )
87
+ set (project_config "${generated_dir} /${PROJECT_NAME} Config.cmake" )
88
+ set (targets_export_name "${PROJECT_NAME} Targets" )
89
+ set (namespace "${PROJECT_NAME} ::" )
90
+
91
+ install (TARGETS ${INSTALL_TARGETS}
92
+ EXPORT "${targets_export_name} "
93
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
94
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
95
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
96
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
97
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
98
+ )
99
+
100
+ install (
101
+ FILES ${CMAKE_SOURCE_DIR} /include /opusfile.h
102
+ DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR} /opus
103
+ )
104
+
105
+ write_basic_package_version_file(
106
+ "${version_config} " COMPATIBILITY SameMajorVersion
107
+ )
108
+
109
+ configure_package_config_file(
110
+ "cmake/template/Config.cmake.in"
111
+ "${project_config} "
112
+ INSTALL_DESTINATION "${config_install_dir} "
113
+ )
114
+
115
+ install (
116
+ FILES "${project_config} " "${version_config} "
117
+ DESTINATION "${config_install_dir} "
118
+ )
119
+
120
+ install (
121
+ EXPORT "${targets_export_name} "
122
+ NAMESPACE "${namespace} "
123
+ DESTINATION "${config_install_dir} "
124
+ )
0 commit comments