FindFFlags.cmake 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. include(FindPackageHandleStandardArgs)
  2. set(_root ${FFlags_ROOT})
  3. if (_root)
  4. set(_root_include ${_root}/include)
  5. set(_root_lib ${_root}/lib)
  6. endif()
  7. # FFlags_ROOT 必须是 FFlags的安装目录
  8. # FFlags
  9. find_path(fflags_h NAMES fflags.h HINTS ${_root_include} DOC "FFlags include directory" NO_DEFAULT_PATH)
  10. find_library(fflags_lib NAMES FFlags libFFlags HINTS ${_root_lib} DOC "FFlags library" NO_DEFAULT_PATH)
  11. unset(_root_include)
  12. unset(_root_lib)
  13. set(fflags_INCLUDE_DIRS ${fflags_h})
  14. set(fflags_LIBRARIES ${fflags_lib})
  15. if (WIN32 AND NOT CYGWIN)
  16. find_file(fflags_dll NAMES FFlags.dll libFFlags.dll HINTS ${_root}/bin DOC "FFlags ddl" NO_DEFAULT_PATH)
  17. if (fflags_dll)
  18. set(fflags_DLL ${fflags_dll})
  19. else()
  20. set(fflags_DLL)
  21. endif()
  22. else()
  23. set(fflags_DLL ${fflags_LIBRARIES})
  24. endif()
  25. unset(fflags_h CACHE)
  26. unset(fflags_lib CACHE)
  27. unset(_root)
  28. find_package_handle_standard_args(FFlags
  29. FOUND_VAR FFlags_FOUND
  30. REQUIRED_VARS
  31. fflags_INCLUDE_DIRS
  32. fflags_LIBRARIES
  33. fflags_DLL) # 强制搜不到包
  34. if (FFlags_FOUND)
  35. add_library(FFlags::fflags STATIC IMPORTED)
  36. set_target_properties(FFlags::fflags PROPERTIES
  37. IMPORTED_IMPLIB "${fflags_DLL}"
  38. IMPORTED_LOCATION "${fflags_LIBRARIES}"
  39. INTERFACE_INCLUDE_DIRECTORIES "${fflags_INCLUDE_DIRS}"
  40. INTERFACE_SOURCES "${fflags_INCLUDE_DIRS}/fflags.h"
  41. PUBLIC_HEADER "${fflags_INCLUDE_DIRS}/fflags.h")
  42. endif()