CheckExportTargets.cmake 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. set(TARGET_NAMES "static_lib" "shared_lib" "interface_lib")
  2. set(static_lib_FOUND "0")
  3. set(shared_lib_FOUND "0")
  4. set(interface_lib_FOUND "0")
  5. macro(checkExportTargets FOLDER_PATH)
  6. message("Checking folder: ${FOLDER_PATH}")
  7. file(GLOB sources_list LIST_DIRECTORIES true RELATIVE ${FOLDER_PATH} ${FOLDER_PATH}/*)
  8. message("Found files and folders: ${sources_list}")
  9. foreach(source ${sources_list})
  10. set(SOURCE_ABS "${FOLDER_PATH}/${source}")
  11. if(IS_DIRECTORY ${SOURCE_ABS})
  12. message("Found subfolder: ${source}")
  13. checkExportTargets(${SOURCE_ABS})
  14. else()
  15. message("Found file: ${source}")
  16. foreach(TARGET_NAME ${TARGET_NAMES})
  17. set(TARGETS_FILE "${TARGET_NAME}Targets.cmake")
  18. if(${source} STREQUAL ${TARGETS_FILE})
  19. message("Found ${TARGETS_FILE} in ${FOLDER_PATH}")
  20. string(TOUPPER ${TARGET_NAME} TARGET_NAME_UPPER)
  21. set(expected_macro "${TARGET_NAME_UPPER}_MACRO")
  22. set(expected_string "INTERFACE_AUTOMOC_MACRO_NAMES \"${expected_macro}\"")
  23. file(READ ${FOLDER_PATH}/${source} contents)
  24. if (NOT contents MATCHES ${expected_string})
  25. message(FATAL_ERROR "Expected ${expected_string} in ${FOLDER_PATH}/${source}")
  26. else()
  27. message("Found ${expected_string} in ${FOLDER_PATH}/${source}")
  28. set(${TARGET_NAME}_FOUND "1")
  29. endif()
  30. endif()
  31. endforeach()
  32. endif()
  33. endforeach()
  34. endmacro()
  35. checkExportTargets(${FOLDER_PATH})
  36. foreach(TARGET_NAME ${TARGET_NAMES})
  37. # check if the target found equals the expected value
  38. if(NOT ${TARGET_NAME}_FOUND STREQUAL "1")
  39. message(FATAL_ERROR "Did not find ${TARGET_NAME}Targets.cmake")
  40. endif()
  41. endforeach()