VsCSharpReferenceProps-check.cmake 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. set(csProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.csproj")
  2. if(NOT EXISTS "${csProjectFile}")
  3. set(RunCMake_TEST_FAILED "Project file ${csProjectFile} does not exist.")
  4. return()
  5. endif()
  6. set(test1Reference "System")
  7. set(test1Tag "Hello")
  8. set(test1Value "World")
  9. set(test2Reference "foo2")
  10. set(test2Tag "Hallo")
  11. set(test2Value "Welt")
  12. set(tag1Found FALSE)
  13. set(ref1Found FALSE)
  14. file(STRINGS "${csProjectFile}" lines)
  15. foreach(i 1 2)
  16. set(testReference "${test${i}Reference}")
  17. set(testTag "${test${i}Tag}")
  18. set(testValue "${test${i}Value}")
  19. foreach(line IN LISTS lines)
  20. if(line MATCHES "^ *<(Project|)Reference .*>$")
  21. set(validTag FALSE)
  22. if(line MATCHES "^ *<(Project|)Reference .*\".*${testReference}.*\".*>$")
  23. set(validTag TRUE)
  24. message(STATUS "foo.csproj is using reference ${testReference}")
  25. set(ref${i}Found TRUE)
  26. endif()
  27. endif()
  28. if(line MATCHES "^ *<${testTag}>${testValue}</${testTag}>$")
  29. if(validTag)
  30. message(STATUS "foo.csproj reference ${testReference} has tag ${testTag}")
  31. set(tag${i}Found TRUE)
  32. else()
  33. message(STATUS "tag ${testTag} found in wrong place!")
  34. set(tag${i}Found FALSE)
  35. endif()
  36. endif()
  37. endforeach()
  38. endforeach()
  39. if(NOT tag1Found OR NOT ref1Found OR
  40. NOT tag2Found OR NOT ref2Found)
  41. set(RunCMake_TEST_FAILED "Custom reference XML tag not found.")
  42. return()
  43. endif()