1
# --------------------------------------------------------------------------------------------
2
# according to man pkg-config
3
# The package name specified on the pkg-config command line is defined to
4
# be the name of the metadata file, minus the .pc extension. If a library
5
# can install multiple versions simultaneously, it must give each version
6
# its own name (for example, GTK 1.2 might have the package name "gtk+"
7
# while GTK 2.0 has "gtk+-2.0").
9
# ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install"
10
# -------------------------------------------------------------------------------------------
12
macro(fix_prefix lst isown)
14
foreach(item ${${lst}})
16
get_target_property(item "${item}" LOCATION_${CMAKE_BUILD_TYPE})
18
get_filename_component(item "${item}" NAME_WE)
19
string(REGEX REPLACE "^lib(.*)" "\\1" item "${item}")
22
if(item MATCHES "^-l")
23
list(APPEND _lst "${item}")
24
elseif(item MATCHES "^-framework") # MacOS framework (assume single entry "-framework OpenCL")
25
list(APPEND _lst "${item}")
26
elseif(item MATCHES "[\\/]")
27
get_filename_component(libdir "${item}" PATH)
28
get_filename_component(libname "${item}" NAME_WE)
29
string(REGEX REPLACE "^lib(.*)" "\\1" libname "${libname}")
30
list(APPEND _lst "-L${libdir}" "-l${libname}")
32
list(APPEND _lst "-l${item}")
39
# build the list of opencv libs and dependencies for all modules
40
ocv_get_all_libs(_modules _extra _3rdparty)
42
#build the list of components
45
# when linking against static libraries, if libfoo depends on libbar, then
46
# libfoo must come first in the linker flags.
48
# world and contrib_world are special targets whose library should come first,
49
# especially for static link.
50
if(_modules MATCHES "opencv_world")
51
set(_modules "opencv_world")
54
if(_modules MATCHES "opencv_contrib_world")
55
list(REMOVE_ITEM _modules "opencv_contrib_world")
56
list(INSERT _modules 0 "opencv_contrib_world")
59
fix_prefix(_modules TRUE)
60
fix_prefix(_extra FALSE)
61
fix_prefix(_3rdparty TRUE)
63
ocv_list_unique(_modules)
64
ocv_list_unique(_extra)
65
ocv_list_unique(_3rdparty)
68
"-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
71
if (BUILD_SHARED_LIBS)
72
set(OPENCV_PC_LIBS_PRIVATE "${_extra}")
74
set(OPENCV_PC_LIBS_PRIVATE
75
"-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
80
string(REPLACE ";" " " OPENCV_PC_LIBS "${OPENCV_PC_LIBS}")
81
string(REPLACE ";" " " OPENCV_PC_LIBS_PRIVATE "${OPENCV_PC_LIBS_PRIVATE}")
83
#generate the .pc file
84
set(prefix "${CMAKE_INSTALL_PREFIX}")
85
set(exec_prefix "\${prefix}")
86
set(libdir "\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}")
87
set(includedir "\${prefix}/${OPENCV_INCLUDE_INSTALL_PATH}")
89
if(INSTALL_TO_MANGLED_PATHS)
90
set(OPENCV_PC_FILE_NAME "opencv-${OPENCV_VERSION}.pc")
92
set(OPENCV_PC_FILE_NAME opencv.pc)
94
configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/opencv-XXX.pc.in"
95
"${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME}"
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)