# Check whether the 'BuildInParallel' setting is set as expected for a specified project file. # Note: if the setting is not present in the project file then it is assumed to be implicitly 'false'. function(check_build_in_parallel_setting projectFile expectedEnabled) set(SettingEnabledRegex "true") set(SettingDisabledRegex "false") if(NOT EXISTS "${projectFile}") set(RunCMake_TEST_FAILED "Project file '${projectFile}' does not exist." PARENT_SCOPE) return() endif() set(settingEnabled FALSE) set(settingExplicitlyDisabled FALSE) file(STRINGS "${projectFile}" lines) foreach(line IN LISTS lines) if(line MATCHES "${SettingEnabledRegex}") set(settingEnabled TRUE) elseif(line MATCHES "${SettingDisabledRegex}") set(settingExplicitlyDisabled TRUE) endif() endforeach() if(expectedEnabled) if(NOT settingEnabled) set(RunCMake_TEST_FAILED "Expected 'BuildInParallel' to be enabled for projectFile '${projectFile}' but it was not!" PARENT_SCOPE) endif() if(settingExplicitlyDisabled) set(RunCMake_TEST_FAILED "Expected 'BuildInParallel' to be enabled for projectFile '${projectFile}' but instead found it explicitly disabled!" PARENT_SCOPE) endif() else() if(settingEnabled) set(RunCMake_TEST_FAILED "Expected 'BuildInParallel' to be disabled for projectFile '${projectFile}' but it was not!") endif() endif() endfunction() check_build_in_parallel_setting("${RunCMake_TEST_BINARY_DIR}/foo1.vcxproj" TRUE) check_build_in_parallel_setting("${RunCMake_TEST_BINARY_DIR}/bar1.vcxproj" FALSE) check_build_in_parallel_setting("${RunCMake_TEST_BINARY_DIR}/foo2.vcxproj" FALSE) check_build_in_parallel_setting("${RunCMake_TEST_BINARY_DIR}/bar2.vcxproj" FALSE)