1# 2# Check C# VS project for required elements. 3# 4set(csProjectFile "${RunCMake_TEST_BINARY_DIR}/foo.csproj") 5if(NOT EXISTS "${csProjectFile}") 6 set(RunCMake_TEST_FAILED "Project file ${csProjectFile} does not exist.") 7 return() 8endif() 9 10 11set(inDebug FALSE) 12set(inRelease FALSE) 13set(debugOK FALSE) 14set(releaseOK FALSE) 15 16 17file(STRINGS "${csProjectFile}" lines) 18foreach(line IN LISTS lines) 19 #message(STATUS ${line}) 20 if(line MATCHES "^ *<PropertyGroup .*Debug\\|(Win32|x64).*") 21 set(inDebug TRUE) 22 elseif(line MATCHES "^ *<PropertyGroup .*Release\\|(Win32|x64).*") 23 set(inRelease TRUE) 24 elseif(line MATCHES "^ *</PropertyGroup> *$") 25 set(inRelease FALSE) 26 set(inDebug FALSE) 27 elseif(inDebug AND 28 (line MATCHES "^ *<NoWarn>.*505.*</NoWarn> *$") AND 29 (line MATCHES "^ *<NoWarn>.*707.*</NoWarn> *$") AND 30 (line MATCHES "^ *<NoWarn>.*808.*</NoWarn> *$") AND 31 (line MATCHES "^ *<NoWarn>.*909.*</NoWarn> *$") 32 ) 33 set(debugOK TRUE) 34 elseif(inRelease AND 35 (NOT (line MATCHES "^ *<NoWarn>.*505.*</NoWarn> *$")) AND 36 (line MATCHES "^ *<NoWarn>.*707.*</NoWarn> *$") AND 37 (line MATCHES "^ *<NoWarn>.*808.*</NoWarn> *$") AND 38 (line MATCHES "^ *<NoWarn>.*909.*</NoWarn> *$") 39 ) 40 set(releaseOK TRUE) 41 endif() 42endforeach() 43 44function(print_csprojfile) 45 file(STRINGS "${csProjectFile}" lines) 46 foreach(line IN LISTS lines) 47 message(STATUS ${line}) 48 endforeach() 49endfunction() 50 51 52if(NOT debugOK) 53 message(STATUS "Failed to set Debug configuration warning config correctly.") 54 set(RunCMake_TEST_FAILED "Failed to set Debug configuration defines correctly.") 55 print_csprojfile() 56 return() 57endif() 58 59if(NOT releaseOK) 60 message(STATUS "Failed to set Release configuration warning config correctly.") 61 set(RunCMake_TEST_FAILED "Failed to set Release configuration defines correctly.") 62 print_csprojfile() 63 return() 64endif() 65