MacroOptionalFindPackage.cmake 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # - MACRO_OPTIONAL_FIND_PACKAGE() combines FIND_PACKAGE() with an OPTION()
  2. # MACRO_OPTIONAL_FIND_PACKAGE( <name> [QUIT] )
  3. # This macro is a combination of OPTION() and FIND_PACKAGE(), it
  4. # works like FIND_PACKAGE(), but additionally it automatically creates
  5. # an option name WITH_<name>, which can be disabled via the cmake GUI.
  6. # or via -DWITH_<name>=OFF
  7. # The standard <name>_FOUND variables can be used in the same way
  8. # as when using the normal FIND_PACKAGE()
  9. # Copyright (c) 2006-2010 Alexander Neundorf, <neundorf@kde.org>
  10. #
  11. # Redistribution and use is allowed according to the terms of the BSD license.
  12. # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
  13. # This is just a helper macro to set a bunch of variables empty.
  14. # We don't know whether the package uses UPPERCASENAME or CamelCaseName, so we try both:
  15. macro(_MOFP_SET_EMPTY_IF_DEFINED _name _var)
  16. if(DEFINED ${_name}_${_var})
  17. set(${_name}_${_var} "")
  18. endif(DEFINED ${_name}_${_var})
  19. string(TOUPPER ${_name} _nameUpper)
  20. if(DEFINED ${_nameUpper}_${_var})
  21. set(${_nameUpper}_${_var} "")
  22. endif(DEFINED ${_nameUpper}_${_var})
  23. endmacro(_MOFP_SET_EMPTY_IF_DEFINED _package _var)
  24. macro (MACRO_OPTIONAL_FIND_PACKAGE _name )
  25. option(WITH_${_name} "Search for ${_name} package" ON)
  26. if (WITH_${_name})
  27. find_package(${_name} ${ARGN})
  28. else (WITH_${_name})
  29. string(TOUPPER ${_name} _nameUpper)
  30. set(${_name}_FOUND FALSE)
  31. set(${_nameUpper}_FOUND FALSE)
  32. _mofp_set_empty_if_defined(${_name} INCLUDE_DIRS)
  33. _mofp_set_empty_if_defined(${_name} INCLUDE_DIR)
  34. _mofp_set_empty_if_defined(${_name} INCLUDES)
  35. _mofp_set_empty_if_defined(${_name} LIBRARY)
  36. _mofp_set_empty_if_defined(${_name} LIBRARIES)
  37. _mofp_set_empty_if_defined(${_name} LIBS)
  38. _mofp_set_empty_if_defined(${_name} FLAGS)
  39. _mofp_set_empty_if_defined(${_name} DEFINITIONS)
  40. endif (WITH_${_name})
  41. endmacro (MACRO_OPTIONAL_FIND_PACKAGE)