CMakeLists.txt 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. cmake_minimum_required(VERSION 2.8)
  2. project(FindLibraryTest NONE)
  3. set(CMAKE_FIND_DEBUG_MODE 1)
  4. macro(test_find_library desc expected)
  5. unset(LIB CACHE)
  6. find_library(LIB ${ARGN} NO_DEFAULT_PATH)
  7. if(LIB)
  8. # Convert to relative path for comparison to expected location.
  9. file(RELATIVE_PATH REL_LIB "${CMAKE_CURRENT_SOURCE_DIR}" "${LIB}")
  10. # Check and report failure.
  11. if(NOT "${REL_LIB}" STREQUAL "${expected}")
  12. message(SEND_ERROR "Library ${expected} found as [${REL_LIB}]${desc}")
  13. elseif(CMAKE_FIND_DEBUG_MODE)
  14. message(STATUS "Library ${expected} found as [${REL_LIB}]${desc}")
  15. endif()
  16. else()
  17. message(SEND_ERROR "Library ${expected} NOT FOUND${desc}")
  18. endif()
  19. endmacro()
  20. macro(test_find_library_subst expected)
  21. get_filename_component(dir ${expected} PATH)
  22. get_filename_component(name ${expected} NAME)
  23. string(REGEX REPLACE "lib/?64" "lib" dir "${dir}")
  24. test_find_library(", searched as ${dir}" "${expected}"
  25. NAMES ${name}
  26. PATHS ${CMAKE_CURRENT_SOURCE_DIR}/${dir}
  27. )
  28. endmacro()
  29. set(CMAKE_FIND_LIBRARY_PREFIXES "lib")
  30. set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
  31. set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE)
  32. set(CMAKE_SIZEOF_VOID_P 4)
  33. foreach(lib
  34. lib/A/lib/libtest1.a
  35. lib/A/libtest1.a
  36. lib/libtest1.a
  37. lib/libtest2.a
  38. lib/libtest3.a
  39. lib/libtest3.a
  40. )
  41. test_find_library_subst(${lib})
  42. endforeach()
  43. set(CMAKE_SIZEOF_VOID_P 8)
  44. foreach(lib64
  45. lib/64/libtest2.a
  46. lib/A/lib64/libtest3.a
  47. lib/libtest3.a
  48. lib64/A/lib/libtest2.a
  49. lib64/A/lib64/libtest1.a
  50. lib64/A/libtest1.a
  51. lib64/libtest1.a
  52. )
  53. test_find_library_subst(${lib64})
  54. endforeach()
  55. test_find_library("" A/libtestA.a
  56. NAMES testA testB
  57. PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A ${CMAKE_CURRENT_SOURCE_DIR}/B
  58. )
  59. test_find_library("" B/libtestB.a
  60. NAMES testB testA
  61. PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A ${CMAKE_CURRENT_SOURCE_DIR}/B
  62. )
  63. test_find_library("" A/libtestA.a
  64. NAMES testB testA NAMES_PER_DIR
  65. PATHS ${CMAKE_CURRENT_SOURCE_DIR}/A ${CMAKE_CURRENT_SOURCE_DIR}/B
  66. )