PkgConfigHelper.cmake 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # Helper for Find modules
  2. function(get_flags_from_pkg_config _library _pc_prefix _out_prefix)
  3. if(MINGW)
  4. set(re_shared_suffix ".dll.a$")
  5. else()
  6. set(re_shared_suffix "${CMAKE_SHARED_LIBRARY_SUFFIX}$")
  7. endif()
  8. if("${_library}" MATCHES "${re_shared_suffix}")
  9. set(_cflags ${_pc_prefix}_CFLAGS_OTHER)
  10. set(_link_libraries ${_pc_prefix}_LIBRARIES)
  11. set(_link_options ${_pc_prefix}_LDFLAGS_OTHER)
  12. set(_library_dirs ${_pc_prefix}_LIBRARY_DIRS)
  13. else()
  14. set(_cflags ${_pc_prefix}_STATIC_CFLAGS_OTHER)
  15. set(_link_libraries ${_pc_prefix}_STATIC_LIBRARIES)
  16. set(_link_options ${_pc_prefix}_STATIC_LDFLAGS_OTHER)
  17. set(_library_dirs ${_pc_prefix}_STATIC_LIBRARY_DIRS)
  18. endif()
  19. # The *_LIBRARIES lists always start with the library itself
  20. list(POP_FRONT "${_link_libraries}")
  21. # Work around CMake's flag deduplication when pc files use `-framework A` instead of `-Wl,-framework,A`
  22. string(REPLACE "-framework;" "-Wl,-framework," "_filtered_link_options" "${${_link_options}}")
  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()