VsJustMyCode-check.cmake 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. macro(VsJustMyCode_check tgt jmc_expect)
  2. set(vcProjectFile "${RunCMake_TEST_BINARY_DIR}/${tgt}.vcxproj")
  3. if(NOT EXISTS "${vcProjectFile}")
  4. set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not exist.")
  5. return()
  6. endif()
  7. set(HAVE_JMC 0)
  8. file(STRINGS "${vcProjectFile}" lines)
  9. foreach(line IN LISTS lines)
  10. if(line MATCHES "^ *<SupportJustMyCode>([^<>]+)</SupportJustMyCode>")
  11. set(jmc_actual "${CMAKE_MATCH_1}")
  12. if(NOT "${jmc_actual}" STREQUAL "${jmc_expect}")
  13. set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj has <SupportJustMyCode> '${jmc_actual}', not '${jmc_expect}'.")
  14. return()
  15. endif()
  16. set(HAVE_JMC 1)
  17. break()
  18. endif()
  19. endforeach()
  20. if(NOT HAVE_JMC AND NOT "${jmc_expect}" STREQUAL "")
  21. set(RunCMake_TEST_FAILED "Project file ${tgt}.vcxproj does not have a <SupportJustMyCode> property group.")
  22. return()
  23. endif()
  24. endmacro()
  25. VsJustMyCode_check(JMC-default-C "")
  26. VsJustMyCode_check(JMC-default-CXX "")
  27. VsJustMyCode_check(JMC-ON-C true)
  28. VsJustMyCode_check(JMC-ON-CXX true)
  29. VsJustMyCode_check(JMC-OFF-C "")
  30. VsJustMyCode_check(JMC-OFF-CXX "")
  31. VsJustMyCode_check(JMC-TGT-ON-C true)
  32. VsJustMyCode_check(JMC-TGT-ON-CXX true)
  33. VsJustMyCode_check(JMC-TGT-OFF-C "")
  34. VsJustMyCode_check(JMC-TGT-OFF-CXX "")