SourceGroupHelpers.cmake 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. function(find_source_group LINES NAME)
  2. set(foundFileFilter 0)
  3. set(foundFilter 0)
  4. string(REPLACE "\\" "\\\\" regexName "${NAME}")
  5. foreach(line IN LISTS LINES)
  6. if(line MATCHES "<Filter>${regexName}</Filter>")
  7. if(foundFileFilter)
  8. set(RunCMake_TEST_FAILED "Multiple files listed with filter for ${NAME}." PARENT_SCOPE)
  9. set(FILTER_FOUND 0 PARENT_SCOPE)
  10. return()
  11. endif()
  12. set(foundFileFilter 1)
  13. endif()
  14. if(line MATCHES "<Filter.*Include=\"${regexName}\"")
  15. if(foundFilter)
  16. set(RunCMake_TEST_FAILED "Multiple copies of ${NAME} filter listed." PARENT_SCOPE)
  17. set(FILTER_FOUND 0 PARENT_SCOPE)
  18. return()
  19. endif()
  20. set(foundFilter 1)
  21. endif()
  22. endforeach()
  23. if(NOT foundFileFilter)
  24. set(RunCMake_TEST_FAILED "File filter for ${NAME} not found." PARENT_SCOPE)
  25. set(FILTER_FOUND 0 PARENT_SCOPE)
  26. return()
  27. endif()
  28. if(NOT foundFilter)
  29. set(RunCMake_TEST_FAILED "Filter ${NAME} not found." PARENT_SCOPE)
  30. set(FILTER_FOUND 0 PARENT_SCOPE)
  31. return()
  32. endif()
  33. set(FILTER_FOUND 1 PARENT_SCOPE)
  34. endfunction()