1
+ if (MSVC OR IOS )
2
+ return ()
3
+ endif ()
4
+
1
5
# --------------------------------------------------------------------------------------------
2
6
# according to man pkg-config
3
7
# The package name specified on the pkg-config command line is defined to
12
16
macro (fix_prefix lst isown )
13
17
set (_lst )
14
18
foreach (item ${${lst}} )
15
- if (TARGET ${item} )
16
- get_target_property (item "${item} " LOCATION_${CMAKE_BUILD_TYPE} )
17
- if (" ${isown} " )
18
- get_filename_component (item "${item} " NAME_WE )
19
- string ( REGEX REPLACE "^lib(.*)" " \\ 1" item "${item} " )
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} " )
20
24
endif ()
21
25
endif ()
22
26
if (item MATCHES "^-l" )
@@ -25,8 +29,8 @@ macro(fix_prefix lst isown)
25
29
list (APPEND _lst "${item} " )
26
30
elseif (item MATCHES "[\\ /]" )
27
31
get_filename_component (libdir "${item} " PATH )
28
- get_filename_component (libname "${item} " NAME_WE )
29
- string ( REGEX REPLACE "^lib(.*)" " \\ 1" libname "${libname } " )
32
+ get_filename_component (_libname "${item} " NAME )
33
+ ocv_get_libname ( libname "${_libname } " )
30
34
list (APPEND _lst "-L${libdir} " "-l${libname} " )
31
35
else ()
32
36
list (APPEND _lst "-l${item} " )
@@ -36,6 +40,14 @@ macro(fix_prefix lst isown)
36
40
unset (_lst )
37
41
endmacro ()
38
42
43
+ if (NOT DEFINED CMAKE_HELPER_SCRIPT )
44
+
45
+ if (INSTALL_TO_MANGLED_PATHS )
46
+ set (OPENCV_PC_FILE_NAME "opencv-${OPENCV_VERSION} .pc" )
47
+ else ()
48
+ set (OPENCV_PC_FILE_NAME opencv.pc )
49
+ endif ()
50
+
39
51
# build the list of opencv libs and dependencies for all modules
40
52
ocv_get_all_libs (_modules _extra _3rdparty )
41
53
@@ -56,9 +68,61 @@ if(_modules MATCHES "opencv_contrib_world")
56
68
list (INSERT _modules 0 "opencv_contrib_world" )
57
69
endif ()
58
70
59
- fix_prefix (_modules TRUE )
60
- fix_prefix (_extra FALSE )
61
- fix_prefix (_3rdparty TRUE )
71
+ set (HELPER_SCRIPT "" )
72
+ ocv_cmake_script_append_var (HELPER_SCRIPT
73
+ BUILD_SHARED_LIBS
74
+ CMAKE_BINARY_DIR
75
+ CMAKE_INSTALL_PREFIX
76
+ OpenCV_SOURCE_DIR
77
+ OPENCV_PC_FILE_NAME
78
+ OPENCV_VERSION_PLAIN
79
+ OPENCV_LIB_INSTALL_PATH
80
+ OPENCV_INCLUDE_INSTALL_PATH
81
+ OPENCV_3P_LIB_INSTALL_PATH
82
+
83
+ _modules
84
+ _extra
85
+ _3rdparty
86
+ )
87
+
88
+ foreach (item ${_modules} ${_extra} ${_3rdparty} )
89
+ if (TARGET ${item} )
90
+ set (HELPER_SCRIPT "${HELPER_SCRIPT}
91
+ set(TARGET_LOCATION_${item} \" $<TARGET_FILE:${item} >\" )
92
+ " )
93
+ endif ()
94
+ endforeach ()
95
+
96
+ set (CMAKE_HELPER_SCRIPT "${CMAKE_BINARY_DIR} /OpenCVGenPkgConfig.info.cmake" )
97
+ file (GENERATE OUTPUT "${CMAKE_HELPER_SCRIPT} " CONTENT "${HELPER_SCRIPT} " )
98
+
99
+ add_custom_target (developer_scripts )
100
+ add_custom_command (
101
+ OUTPUT "${CMAKE_BINARY_DIR} /unix-install/${OPENCV_PC_FILE_NAME} "
102
+ COMMAND ${CMAKE_COMMAND} "-DCMAKE_HELPER_SCRIPT=${CMAKE_HELPER_SCRIPT} " -P "${OpenCV_SOURCE_DIR} /cmake/OpenCVGenPkgconfig.cmake"
103
+ DEPENDS "${CMAKE_BINARY_DIR} /OpenCVGenPkgConfig.info.cmake"
104
+ "${OpenCV_SOURCE_DIR} /cmake/OpenCVGenPkgconfig.cmake"
105
+ COMMENT "Generate ${OPENCV_PC_FILE_NAME} "
106
+ )
107
+ add_custom_target (gen-pkgconfig ALL SOURCES "${CMAKE_BINARY_DIR} /unix-install/${OPENCV_PC_FILE_NAME} " )
108
+ add_dependencies (developer_scripts gen-pkgconfig )
109
+
110
+
111
+ if (UNIX AND NOT ANDROID )
112
+ install (FILES ${CMAKE_BINARY_DIR} /unix-install/${OPENCV_PC_FILE_NAME} DESTINATION ${OPENCV_LIB_INSTALL_PATH} /pkgconfig COMPONENT dev )
113
+ endif ()
114
+
115
+ # =============================================================================
116
+ else () # DEFINED CMAKE_HELPER_SCRIPT
117
+
118
+ cmake_minimum_required (VERSION 2.8.12.2 )
119
+ cmake_policy (SET CMP0012 NEW )
120
+ include ("${CMAKE_HELPER_SCRIPT} " )
121
+ include ("${OpenCV_SOURCE_DIR} /cmake/OpenCVUtils.cmake" )
122
+
123
+ fix_prefix (_modules 1 )
124
+ fix_prefix (_extra 0 )
125
+ fix_prefix (_3rdparty 1 )
62
126
63
127
ocv_list_unique (_modules )
64
128
ocv_list_unique (_extra )
@@ -68,7 +132,7 @@ set(OPENCV_PC_LIBS
68
132
"-L\$ {exec_prefix}/${OPENCV_LIB_INSTALL_PATH} "
69
133
"${_modules} "
70
134
)
71
- if (BUILD_SHARED_LIBS )
135
+ if (BUILD_SHARED_LIBS )
72
136
set (OPENCV_PC_LIBS_PRIVATE "${_extra} " )
73
137
else ()
74
138
set (OPENCV_PC_LIBS_PRIVATE
@@ -86,15 +150,8 @@ set(exec_prefix "\${prefix}")
86
150
set (libdir "\$ {exec_prefix}/${OPENCV_LIB_INSTALL_PATH} " )
87
151
set (includedir "\$ {prefix}/${OPENCV_INCLUDE_INSTALL_PATH} " )
88
152
89
- if (INSTALL_TO_MANGLED_PATHS )
90
- set (OPENCV_PC_FILE_NAME "opencv-${OPENCV_VERSION} .pc" )
91
- else ()
92
- set (OPENCV_PC_FILE_NAME opencv.pc )
93
- endif ()
94
153
configure_file ("${OpenCV_SOURCE_DIR} /cmake/templates/opencv-XXX.pc.in"
95
154
"${CMAKE_BINARY_DIR} /unix-install/${OPENCV_PC_FILE_NAME} "
96
155
@ONLY )
97
156
98
- if (UNIX AND NOT ANDROID )
99
- install (FILES ${CMAKE_BINARY_DIR} /unix-install/${OPENCV_PC_FILE_NAME} DESTINATION ${OPENCV_LIB_INSTALL_PATH} /pkgconfig COMPONENT dev )
100
- endif ()
157
+ endif () # DEFINED CMAKE_HELPER_SCRIPT
0 commit comments