| # -------------------------------------------------------------------------------------------- |
| # according to man pkg-config |
| # The package name specified on the pkg-config command line is defined to |
| # be the name of the metadata file, minus the .pc extension. If a library |
| # can install multiple versions simultaneously, it must give each version |
| # its own name (for example, GTK 1.2 might have the package name "gtk+" |
| # while GTK 2.0 has "gtk+-2.0"). |
| # |
| # ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install" |
| # ------------------------------------------------------------------------------------------- |
| |
| macro(fix_prefix lst isown) |
| set(_lst) |
| foreach(item ${${lst}}) |
| if(TARGET ${item}) |
| get_target_property(item "${item}" LOCATION_${CMAKE_BUILD_TYPE}) |
| if("${isown}") |
| get_filename_component(item "${item}" NAME_WE) |
| string(REGEX REPLACE "^lib(.*)" "\\1" item "${item}") |
| endif() |
| endif() |
| if(item MATCHES "^-l") |
| list(APPEND _lst "${item}") |
| elseif(item MATCHES "[\\/]") |
| get_filename_component(libdir "${item}" PATH) |
| get_filename_component(libname "${item}" NAME_WE) |
| string(REGEX REPLACE "^lib(.*)" "\\1" libname "${libname}") |
| list(APPEND _lst "-L${libdir}" "-l${libname}") |
| else() |
| list(APPEND _lst "-l${item}") |
| endif() |
| endforeach() |
| set(${lst} ${_lst}) |
| unset(_lst) |
| endmacro() |
| |
| # build the list of opencv libs and dependencies for all modules |
| ocv_get_all_libs(_modules _extra _3rdparty) |
| |
| #build the list of components |
| |
| # Note: |
| # when linking against static libraries, if libfoo depends on libbar, then |
| # libfoo must come first in the linker flags. |
| |
| # world and contrib_world are special targets whose library should come first, |
| # especially for static link. |
| if(_modules MATCHES "opencv_world") |
| set(_modules "opencv_world") |
| endif() |
| |
| if(_modules MATCHES "opencv_contrib_world") |
| list(REMOVE_ITEM _modules "opencv_contrib_world") |
| list(INSERT _modules 0 "opencv_contrib_world") |
| endif() |
| |
| fix_prefix(_modules TRUE) |
| fix_prefix(_extra FALSE) |
| fix_prefix(_3rdparty TRUE) |
| |
| ocv_list_unique(_modules) |
| ocv_list_unique(_extra) |
| ocv_list_unique(_3rdparty) |
| |
| set(OPENCV_PC_LIBS |
| "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}" |
| "${_modules}" |
| ) |
| if (BUILD_SHARED_LIBS) |
| set(OPENCV_PC_LIBS_PRIVATE "${_extra}") |
| else() |
| set(OPENCV_PC_LIBS_PRIVATE |
| "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}" |
| "${_3rdparty}" |
| "${_extra}" |
| ) |
| endif() |
| string(REPLACE ";" " " OPENCV_PC_LIBS "${OPENCV_PC_LIBS}") |
| string(REPLACE ";" " " OPENCV_PC_LIBS_PRIVATE "${OPENCV_PC_LIBS_PRIVATE}") |
| |
| #generate the .pc file |
| set(prefix "${CMAKE_INSTALL_PREFIX}") |
| set(exec_prefix "\${prefix}") |
| set(libdir "\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}") |
| set(includedir "\${prefix}/${OPENCV_INCLUDE_INSTALL_PATH}") |
| |
| if(INSTALL_TO_MANGLED_PATHS) |
| set(OPENCV_PC_FILE_NAME "opencv-${OPENCV_VERSION}.pc") |
| else() |
| set(OPENCV_PC_FILE_NAME opencv.pc) |
| endif() |
| configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/opencv-XXX.pc.in" |
| "${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME}" |
| @ONLY) |
| |
| if(UNIX AND NOT ANDROID) |
| install(FILES ${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME} DESTINATION ${OPENCV_LIB_INSTALL_PATH}/pkgconfig COMPONENT dev) |
| endif() |