From 70ed720232adf8724b6cdbb2cd0bd3ac629cccfb Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 14 Nov 2025 10:56:16 -0500 Subject: [PATCH] VS: Add SLNX default startup project At the time of commit e6aa7742b0 (VS: Generate .slnx files for VS 2026, 2025-09-17, v4.2.0-rc1~151^2), the VS 18 Insiders edition did not offer support for specifying a default startup project in `.slnx` files. This has since been added, so use it. Fixes: #27387 --- Source/cmVSSolution.cxx | 3 +++ .../RunCMake/VSSolution/AddPackageToDefault-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/CMP0143-NEW-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/CMP0143-OLD-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/CMP0143-WARN-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/DeployEnabled-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/MorePost-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/MorePre-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/OnePost-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/OnePre-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/Override1-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/Override2-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/Override3-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/PrePost-check-slnx.cmake | 2 +- Tests/RunCMake/VSSolution/SolutionItems-check-slnx.cmake | 4 ++-- Tests/RunCMake/VSSolution/StartupProject-check-slnx.cmake | 2 +- .../VSSolution/StartupProjectMissing-check-slnx.cmake | 2 +- .../VSSolution/StartupProjectUseFolders-check-slnx.cmake | 2 +- .../VsDotnetSdk/VsDotnetSdkTargetPlatform-check-slnx.cmake | 2 +- .../include_external_msproject/AutoType-check-slnx.cmake | 2 +- .../include_external_msproject/CustomConfig-check-slnx.cmake | 2 +- .../include_external_msproject/CustomGuid-check-slnx.cmake | 2 +- .../CustomGuidTypePlatform-check-slnx.cmake | 2 +- .../CustomTypePlatform-check-slnx.cmake | 2 +- 24 files changed, 27 insertions(+), 24 deletions(-) diff --git a/Source/cmVSSolution.cxx b/Source/cmVSSolution.cxx index f85231d9a6..eb750db077 100644 --- a/Source/cmVSSolution.cxx +++ b/Source/cmVSSolution.cxx @@ -312,6 +312,9 @@ void WriteSlnxProject(cmXMLElement& xmlParent, Solution const& solution, cmXMLElement xmlProject(xmlParent, "Project"); xmlProject.Attribute("Path", project.Path); xmlProject.Attribute("Id", cmSystemTools::LowerCase(project.Id)); + if (project.Name == solution.StartupProject) { + xmlProject.Attribute("DefaultStartup", "true"); + } for (Solution::Project const* d : project.BuildDependencies) { cmXMLElement(xmlProject, "BuildDependency").Attribute("Project", d->Path); } diff --git a/Tests/RunCMake/VSSolution/AddPackageToDefault-check-slnx.cmake b/Tests/RunCMake/VSSolution/AddPackageToDefault-check-slnx.cmake index b60f278f40..320cab5ba3 100644 --- a/Tests/RunCMake/VSSolution/AddPackageToDefault-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/AddPackageToDefault-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/AddPackageToDefault.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/CMP0143-NEW-check-slnx.cmake b/Tests/RunCMake/VSSolution/CMP0143-NEW-check-slnx.cmake index 67d10cb384..009e372791 100644 --- a/Tests/RunCMake/VSSolution/CMP0143-NEW-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/CMP0143-NEW-check-slnx.cmake @@ -16,7 +16,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/CMP0143-NEW.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/CMP0143-OLD-check-slnx.cmake b/Tests/RunCMake/VSSolution/CMP0143-OLD-check-slnx.cmake index cfcb5d43b6..7de36eefdf 100644 --- a/Tests/RunCMake/VSSolution/CMP0143-OLD-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/CMP0143-OLD-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/CMP0143-OLD.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/CMP0143-WARN-check-slnx.cmake b/Tests/RunCMake/VSSolution/CMP0143-WARN-check-slnx.cmake index 0c51664732..863da1d379 100644 --- a/Tests/RunCMake/VSSolution/CMP0143-WARN-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/CMP0143-WARN-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/CMP0143-WARN.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/DeployEnabled-check-slnx.cmake b/Tests/RunCMake/VSSolution/DeployEnabled-check-slnx.cmake index 94b297dc80..82b9c762c8 100644 --- a/Tests/RunCMake/VSSolution/DeployEnabled-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/DeployEnabled-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/DeployEnabled.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/MorePost-check-slnx.cmake b/Tests/RunCMake/VSSolution/MorePost-check-slnx.cmake index ef8173b42f..8cb982f191 100644 --- a/Tests/RunCMake/VSSolution/MorePost-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/MorePost-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/MorePost.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/MorePre-check-slnx.cmake b/Tests/RunCMake/VSSolution/MorePre-check-slnx.cmake index d025b6c6bf..65c82a53bf 100644 --- a/Tests/RunCMake/VSSolution/MorePre-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/MorePre-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/MorePre.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/OnePost-check-slnx.cmake b/Tests/RunCMake/VSSolution/OnePost-check-slnx.cmake index 4556be6bfd..a76d41c0bd 100644 --- a/Tests/RunCMake/VSSolution/OnePost-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/OnePost-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/OnePost.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/OnePre-check-slnx.cmake b/Tests/RunCMake/VSSolution/OnePre-check-slnx.cmake index e01b91a683..e6a1f7b686 100644 --- a/Tests/RunCMake/VSSolution/OnePre-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/OnePre-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/OnePre.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/Override1-check-slnx.cmake b/Tests/RunCMake/VSSolution/Override1-check-slnx.cmake index 6b53eead35..a58bb01a2c 100644 --- a/Tests/RunCMake/VSSolution/Override1-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/Override1-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/Override1.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/Override2-check-slnx.cmake b/Tests/RunCMake/VSSolution/Override2-check-slnx.cmake index 8a80a0ec44..b3b73f8318 100644 --- a/Tests/RunCMake/VSSolution/Override2-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/Override2-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/Override2.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/Override3-check-slnx.cmake b/Tests/RunCMake/VSSolution/Override3-check-slnx.cmake index 93d6dc5e53..a756874afc 100644 --- a/Tests/RunCMake/VSSolution/Override3-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/Override3-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/Override3.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/PrePost-check-slnx.cmake b/Tests/RunCMake/VSSolution/PrePost-check-slnx.cmake index 824add6565..f3f10c6c13 100644 --- a/Tests/RunCMake/VSSolution/PrePost-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/PrePost-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/PrePost.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/SolutionItems-check-slnx.cmake b/Tests/RunCMake/VSSolution/SolutionItems-check-slnx.cmake index ee6f654b31..4021cbf411 100644 --- a/Tests/RunCMake/VSSolution/SolutionItems-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/SolutionItems-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/SolutionItems.slnx" [[ - + @@ -38,7 +38,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/SolutionItems/SolutionItemsSubp - + diff --git a/Tests/RunCMake/VSSolution/StartupProject-check-slnx.cmake b/Tests/RunCMake/VSSolution/StartupProject-check-slnx.cmake index efd6fcd6ab..b8f9639b59 100644 --- a/Tests/RunCMake/VSSolution/StartupProject-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/StartupProject-check-slnx.cmake @@ -15,7 +15,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/StartupProject.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/StartupProjectMissing-check-slnx.cmake b/Tests/RunCMake/VSSolution/StartupProjectMissing-check-slnx.cmake index f2de6f324c..ce0f3822d2 100644 --- a/Tests/RunCMake/VSSolution/StartupProjectMissing-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/StartupProjectMissing-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/StartupProjectMissing.slnx" [[ - + diff --git a/Tests/RunCMake/VSSolution/StartupProjectUseFolders-check-slnx.cmake b/Tests/RunCMake/VSSolution/StartupProjectUseFolders-check-slnx.cmake index dcebe09298..c3aef00aa7 100644 --- a/Tests/RunCMake/VSSolution/StartupProjectUseFolders-check-slnx.cmake +++ b/Tests/RunCMake/VSSolution/StartupProjectUseFolders-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/StartupProjectUseFolders.slnx" - + diff --git a/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkTargetPlatform-check-slnx.cmake b/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkTargetPlatform-check-slnx.cmake index f1f7492c1c..aa1c0f60c8 100644 --- a/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkTargetPlatform-check-slnx.cmake +++ b/Tests/RunCMake/VsDotnetSdk/VsDotnetSdkTargetPlatform-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/VsDotnetSdkTargetPlatform.slnx" - + diff --git a/Tests/RunCMake/include_external_msproject/AutoType-check-slnx.cmake b/Tests/RunCMake/include_external_msproject/AutoType-check-slnx.cmake index 560c9c0229..ba6894161f 100644 --- a/Tests/RunCMake/include_external_msproject/AutoType-check-slnx.cmake +++ b/Tests/RunCMake/include_external_msproject/AutoType-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/AutoType.slnx" [[ - + diff --git a/Tests/RunCMake/include_external_msproject/CustomConfig-check-slnx.cmake b/Tests/RunCMake/include_external_msproject/CustomConfig-check-slnx.cmake index 439d9ffb66..d3f5b8b064 100644 --- a/Tests/RunCMake/include_external_msproject/CustomConfig-check-slnx.cmake +++ b/Tests/RunCMake/include_external_msproject/CustomConfig-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/CustomConfig.slnx" [[ - + diff --git a/Tests/RunCMake/include_external_msproject/CustomGuid-check-slnx.cmake b/Tests/RunCMake/include_external_msproject/CustomGuid-check-slnx.cmake index c03a4280f8..07a16b61a0 100644 --- a/Tests/RunCMake/include_external_msproject/CustomGuid-check-slnx.cmake +++ b/Tests/RunCMake/include_external_msproject/CustomGuid-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/CustomGuid.slnx" [[ - + diff --git a/Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check-slnx.cmake b/Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check-slnx.cmake index 9792fde7ec..a5806d03f2 100644 --- a/Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check-slnx.cmake +++ b/Tests/RunCMake/include_external_msproject/CustomGuidTypePlatform-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/CustomGuidTypePlatform.slnx" [[ - + diff --git a/Tests/RunCMake/include_external_msproject/CustomTypePlatform-check-slnx.cmake b/Tests/RunCMake/include_external_msproject/CustomTypePlatform-check-slnx.cmake index 30156f1542..5eb662275a 100644 --- a/Tests/RunCMake/include_external_msproject/CustomTypePlatform-check-slnx.cmake +++ b/Tests/RunCMake/include_external_msproject/CustomTypePlatform-check-slnx.cmake @@ -8,7 +8,7 @@ RunCMake_check_slnx("${RunCMake_TEST_BINARY_DIR}/CustomTypePlatform.slnx" [[ - +