opencv

Форк
0
/
OpenCVGenPkgconfig.cmake 
152 строки · 4.8 Кб
1
if(MSVC OR IOS OR XROS)
2
  return()
3
endif()
4

5
# --------------------------------------------------------------------------------------------
6
# according to man pkg-config
7
#  The package name specified on the pkg-config command line is defined to
8
#      be the name of the metadata file, minus the .pc extension. If a library
9
#      can install multiple versions simultaneously, it must give each version
10
#      its own name (for example, GTK 1.2 might have the package  name  "gtk+"
11
#      while GTK 2.0 has "gtk+-2.0").
12
#
13
# ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install"
14
# -------------------------------------------------------------------------------------------
15

16
macro(fix_prefix lst isown)
17
  set(_lst)
18
  foreach(item ${${lst}})
19
    if(DEFINED TARGET_LOCATION_${item})
20
      set(item "${TARGET_LOCATION_${item}}")
21
      if(${isown})
22
        get_filename_component(item "${item}" NAME)
23
        ocv_get_libname(item "${item}")
24
      endif()
25
    endif()
26
    if(item MATCHES "^-l")
27
      list(APPEND _lst "${item}")
28
    elseif(item MATCHES "^-framework") # MacOS framework (assume single entry "-framework OpenCL")
29
      list(APPEND _lst "${item}")
30
    elseif(item MATCHES "[\\/]")
31
      get_filename_component(libdir "${item}" PATH)
32
      get_filename_component(_libname "${item}" NAME)
33
      ocv_get_libname(libname "${_libname}")
34
      list(APPEND _lst "-L${libdir}" "-l${libname}")
35
    else()
36
      list(APPEND _lst "-l${item}")
37
    endif()
38
  endforeach()
39
  set(${lst} ${_lst})
40
  unset(_lst)
41
endmacro()
42

43
if(NOT DEFINED CMAKE_HELPER_SCRIPT)
44

45
if(INSTALL_TO_MANGLED_PATHS)
46
  ocv_update(OPENCV_PC_FILE_NAME "opencv-${OPENCV_VERSION}.pc")
47
else()
48
  ocv_update(OPENCV_PC_FILE_NAME opencv4.pc)
49
endif()
50

51
# build the list of opencv libs and dependencies for all modules
52
ocv_get_all_libs(_modules _extra _3rdparty)
53

54
#build the list of components
55

56
# Note:
57
#   when linking against static libraries, if libfoo depends on libbar, then
58
#   libfoo must come first in the linker flags.
59

60
# world is a special target whose library should come first,
61
# especially for static link.
62
if(_modules MATCHES "opencv_world")
63
  set(_modules "opencv_world")
64
endif()
65

66
set(HELPER_SCRIPT "")
67
ocv_cmake_script_append_var(HELPER_SCRIPT
68
    BUILD_SHARED_LIBS
69
    CMAKE_BINARY_DIR
70
    CMAKE_INSTALL_PREFIX
71
    OpenCV_SOURCE_DIR
72
    OPENCV_PC_FILE_NAME
73
    OPENCV_VERSION_PLAIN
74
    OPENCV_LIB_INSTALL_PATH
75
    OPENCV_INCLUDE_INSTALL_PATH
76
    OPENCV_3P_LIB_INSTALL_PATH
77

78
    _modules
79
    _extra
80
    _3rdparty
81
)
82

83
foreach(item ${_modules} ${_extra} ${_3rdparty})
84
  if(TARGET ${item})
85
    set(HELPER_SCRIPT "${HELPER_SCRIPT}
86
set(TARGET_LOCATION_${item} \"$<TARGET_FILE:${item}>\")
87
")
88
  endif()
89
endforeach()
90

91
set(CMAKE_HELPER_SCRIPT "${CMAKE_BINARY_DIR}/OpenCVGenPkgConfig.info.cmake")
92
file(GENERATE OUTPUT "${CMAKE_HELPER_SCRIPT}" CONTENT "${HELPER_SCRIPT}")
93

94
add_custom_target(developer_scripts)
95
add_custom_command(
96
  OUTPUT "${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME}"
97
  COMMAND ${CMAKE_COMMAND} "-DCMAKE_HELPER_SCRIPT=${CMAKE_HELPER_SCRIPT}" -P "${OpenCV_SOURCE_DIR}/cmake/OpenCVGenPkgconfig.cmake"
98
  DEPENDS "${CMAKE_BINARY_DIR}/OpenCVGenPkgConfig.info.cmake"
99
          "${OpenCV_SOURCE_DIR}/cmake/OpenCVGenPkgconfig.cmake"
100
  COMMENT "Generate ${OPENCV_PC_FILE_NAME}"
101
)
102
add_custom_target(gen-pkgconfig ALL SOURCES "${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME}")
103
add_dependencies(developer_scripts gen-pkgconfig)
104

105

106
if((UNIX AND NOT ANDROID) OR MINGW)
107
  install(FILES ${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME} DESTINATION ${OPENCV_LIB_INSTALL_PATH}/pkgconfig COMPONENT dev)
108
endif()
109

110
# =============================================================================
111
else() # DEFINED CMAKE_HELPER_SCRIPT
112

113
cmake_minimum_required(VERSION 2.8.12.2)
114
cmake_policy(SET CMP0012 NEW)
115
include("${CMAKE_HELPER_SCRIPT}")
116
include("${OpenCV_SOURCE_DIR}/cmake/OpenCVUtils.cmake")
117

118
fix_prefix(_modules 1)
119
fix_prefix(_extra 0)
120
fix_prefix(_3rdparty 1)
121

122
ocv_list_unique(_modules)
123
ocv_list_unique(_extra)
124
ocv_list_unique(_3rdparty)
125

126
set(OPENCV_PC_LIBS
127
  "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
128
  "${_modules}"
129
)
130
if(BUILD_SHARED_LIBS)
131
  set(OPENCV_PC_LIBS_PRIVATE "${_extra}")
132
else()
133
  set(OPENCV_PC_LIBS_PRIVATE
134
    "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
135
    "${_3rdparty}"
136
    "${_extra}"
137
  )
138
endif()
139
string(REPLACE ";" " " OPENCV_PC_LIBS "${OPENCV_PC_LIBS}")
140
string(REPLACE ";" " " OPENCV_PC_LIBS_PRIVATE "${OPENCV_PC_LIBS_PRIVATE}")
141

142
#generate the .pc file
143
set(prefix      "${CMAKE_INSTALL_PREFIX}")
144
set(exec_prefix "\${prefix}")
145
set(libdir      "\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}")
146
set(includedir  "\${prefix}/${OPENCV_INCLUDE_INSTALL_PATH}")
147

148
configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/opencv-XXX.pc.in"
149
               "${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME}"
150
               @ONLY)
151

152
endif() # DEFINED CMAKE_HELPER_SCRIPT
153

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.