PkgConfigHelper.cmake 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # Helper for Find modules
  2. function(get_flags_from_pkg_config _library _pc_prefix _out_prefix)
  3. if("${_library}" MATCHES "${CMAKE_STATIC_LIBRARY_SUFFIX}$")
  4. set(_include_dirs ${_pc_prefix}_STATIC_INCLUDE_DIRS)
  5. set(_cflags ${_pc_prefix}_STATIC_CFLAGS_OTHER)
  6. set(_link_libraries ${_pc_prefix}_STATIC_LIBRARIES)
  7. set(_link_options ${_pc_prefix}_STATIC_LDFLAGS_OTHER)
  8. set(_library_dirs ${_pc_prefix}_STATIC_LIBRARY_DIRS)
  9. else()
  10. set(_include_dirs ${_pc_prefix}_INCLUDE_DIRS)
  11. set(_cflags ${_pc_prefix}_CFLAGS_OTHER)
  12. set(_link_libraries ${_pc_prefix}_LIBRARIES)
  13. set(_link_options ${_pc_prefix}_LDFLAGS_OTHER)
  14. set(_library_dirs ${_pc_prefix}_LIBRARY_DIRS)
  15. endif()
  16. # The *_LIBRARIES lists always start with the library itself
  17. list(POP_FRONT "${_link_libraries}")
  18. # Work around CMake's flag deduplication when pc files use `-framework A` instead of `-Wl,-framework,A`
  19. string(REPLACE "-framework;" "-Wl,-framework," "_filtered_link_options" "${${_link_options}}")
  20. set(${_out_prefix}_include_dirs
  21. "${${_include_dirs}}"
  22. PARENT_SCOPE)
  23. set(${_out_prefix}_compile_options
  24. "${${_cflags}}"
  25. PARENT_SCOPE)
  26. set(${_out_prefix}_link_libraries
  27. "${${_link_libraries}}"
  28. PARENT_SCOPE)
  29. set(${_out_prefix}_link_options
  30. "${_filtered_link_options}"
  31. PARENT_SCOPE)
  32. set(${_out_prefix}_link_directories
  33. "${${_library_dirs}}"
  34. PARENT_SCOPE)
  35. endfunction()