ExplicitCMakeLists-check.cmake 808 B

12345678910111213141516171819202122232425
  1. set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")
  2. if(NOT EXISTS "${vcProjectFile}")
  3. set(RunCMake_TEST_FAILED "Project file ${vcProjectFile} does not exist.")
  4. return()
  5. endif()
  6. set(foundCMakeLists 0)
  7. file(STRINGS "${vcProjectFile}" lines)
  8. foreach(line IN LISTS lines)
  9. if(line MATCHES "<([A-Za-z0-9_]+) +Include=.*CMakeLists.txt")
  10. set(rule "${CMAKE_MATCH_1}")
  11. if(NOT rule STREQUAL "CustomBuild")
  12. set(RunCMake_TEST_FAILED "CMakeLists.txt referenced as ${rule} instead of CustomBuild")
  13. return()
  14. endif()
  15. if(foundCMakeLists)
  16. set(RunCMake_TEST_FAILED "CMakeLists.txt referenced multiple times")
  17. return()
  18. endif()
  19. set(foundCMakeLists 1)
  20. endif()
  21. endforeach()
  22. if(NOT foundCMakeLists)
  23. set(RunCMake_TEST_FAILED "CMakeLists.txt not referenced")
  24. endif()