macro(check_project_file projectFile) if(NOT EXISTS "${projectFile}") set(RunCMake_TEST_FAILED "Project file ${projectFile} does not exist.") return() endif() string(REPLACE "${RunCMake_TEST_BINARY_DIR}/" "" projectName ${projectFile}) set(InsideGlobals FALSE) set(DefaultLanguageSet FALSE) set(MinimumVisualStudioVersionSet FALSE) set(TestPropertySet FALSE) file(STRINGS "${projectFile}" lines) foreach(line IN LISTS lines) if(line MATCHES "^ * *$") set(InsideGlobals TRUE) elseif(line MATCHES "^ *([a-zA-Z\\-]+) *$") if("${CMAKE_MATCH_1}" STREQUAL "en-US") if(InsideGlobals) message(STATUS "${projectName} has correct DefaultLanguage global property") set(DefaultLanguageSet TRUE) else() message(STATUS "DefaultLanguage is set but not within \"Globals\" property group") endif() endif() elseif(line MATCHES "^ *([0-9\\.]+) *$") if("${CMAKE_MATCH_1}" STREQUAL "10.0") if(InsideGlobals) message(STATUS "${projectName} has correct MinimumVisualStudioVersion global property") set(MinimumVisualStudioVersionSet TRUE) else() message(STATUS "MinimumVisualStudioVersion is set but not within \"Globals\" property group") endif() endif() elseif(line MATCHES "^ *(.+) *$") if("${CMAKE_MATCH_1}" STREQUAL "TestValue") if(InsideGlobals) message(STATUS "${projectName} has correct TestProperty global property") set(TestPropertySet TRUE) else() message(STATUS "TestProperty is set but not within \"Globals\" property group") endif() endif() endif() endforeach() if(NOT DefaultLanguageSet) set(RunCMake_TEST_FAILED "DefaultLanguage not found or not set correctly in ${projectName}.") return() endif() if(NOT MinimumVisualStudioVersionSet) set(RunCMake_TEST_FAILED "MinimumVisualStudioVersion not found or not set correctly in ${projectName}.") return() endif() if(NOT TestPropertySet) set(RunCMake_TEST_FAILED "TestProperty not found or not set correctly in ${projectName}.") return() endif() endmacro() check_project_file("${RunCMake_TEST_BINARY_DIR}/CMakeFiles/${CMAKE_VERSION}/CompilerIdCXX/CompilerIdCXX.vcxproj") check_project_file("${RunCMake_TEST_BINARY_DIR}/foo.vcxproj")