Use Ninja for MSVC release and cross builds (#3938)

This commit is contained in:
Seth Flynn 2025-07-05 02:38:51 -04:00 committed by GitHub
commit 19e69b7197
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 83 additions and 90 deletions

View File

@ -13,12 +13,12 @@ on:
- "**.ui" - "**.ui"
# Directories # Directories
- "buildconfig/" - "buildconfig/**"
- "cmake/" - "cmake/**"
- "launcher/" - "launcher/**"
- "libraries/" - "libraries/**"
- "program_info/" - "program_info/**"
- "tests/" - "tests/**"
# Files # Files
- "CMakeLists.txt" - "CMakeLists.txt"
@ -26,21 +26,23 @@ on:
# Workflows # Workflows
- ".github/workflows/build.yml" - ".github/workflows/build.yml"
- ".github/actions/package/" - ".github/actions/package/**"
- ".github/actions/setup-dependencies/" - ".github/actions/setup-dependencies/**"
pull_request: pull_request:
paths: paths:
# File types # File types
- "**.cpp" - "**.cpp"
- "**.h" - "**.h"
- "**.java"
- "**.ui"
# Directories # Directories
- "buildconfig/" - "buildconfig/**"
- "cmake/" - "cmake/**"
- "launcher/" - "launcher/**"
- "libraries/" - "libraries/**"
- "program_info/" - "program_info/**"
- "tests/" - "tests/**"
# Files # Files
- "CMakeLists.txt" - "CMakeLists.txt"
@ -48,8 +50,8 @@ on:
# Workflows # Workflows
- ".github/workflows/build.yml" - ".github/workflows/build.yml"
- ".github/actions/package/" - ".github/actions/package/**"
- ".github/actions/setup-dependencies/" - ".github/actions/setup-dependencies/**"
workflow_call: workflow_call:
inputs: inputs:
build-type: build-type:

View File

@ -13,43 +13,45 @@ on:
- "**.ui" - "**.ui"
# Directories # Directories
- "buildconfig/" - "buildconfig/**"
- "cmake/" - "cmake/**"
- "launcher/" - "launcher/**"
- "libraries/" - "libraries/**"
- "program_info/" - "program_info/**"
- "tests/" - "tests/**"
# Files # Files
- "CMakeLists.txt" - "CMakeLists.txt"
- "COPYING.md" - "COPYING.md"
# Workflows # Workflows
- ".github/codeql" - ".github/codeql/**"
- ".github/workflows/codeql.yml" - ".github/workflows/codeql.yml"
- ".github/actions/setup-dependencies/" - ".github/actions/setup-dependencies/**"
pull_request: pull_request:
paths: paths:
# File types # File types
- "**.cpp" - "**.cpp"
- "**.h" - "**.h"
- "**.java"
- "**.ui"
# Directories # Directories
- "buildconfig/" - "buildconfig/**"
- "cmake/" - "cmake/**"
- "launcher/" - "launcher/**"
- "libraries/" - "libraries/**"
- "program_info/" - "program_info/**"
- "tests/" - "tests/**"
# Files # Files
- "CMakeLists.txt" - "CMakeLists.txt"
- "COPYING.md" - "COPYING.md"
# Workflows # Workflows
- ".github/codeql" - ".github/codeql/**"
- ".github/workflows/codeql.yml" - ".github/workflows/codeql.yml"
- ".github/actions/setup-dependencies/" - ".github/actions/setup-dependencies/**"
workflow_dispatch: workflow_dispatch:
jobs: jobs:

View File

@ -16,15 +16,15 @@ on:
- "**.ui" - "**.ui"
# Build files # Build files
- "flatpak/" - "flatpak/**"
# Directories # Directories
- "buildconfig/" - "buildconfig/**"
- "cmake/" - "cmake/**"
- "launcher/" - "launcher/**"
- "libraries/" - "libraries/**"
- "program_info/" - "program_info/**"
- "tests/" - "tests/**"
# Files # Files
- "CMakeLists.txt" - "CMakeLists.txt"
@ -37,17 +37,19 @@ on:
# File types # File types
- "**.cpp" - "**.cpp"
- "**.h" - "**.h"
- "**.java"
- "**.ui"
# Build files # Build files
- "flatpak/" - "flatpak/**"
# Directories # Directories
- "buildconfig/" - "buildconfig/**"
- "cmake/" - "cmake/**"
- "launcher/" - "launcher/**"
- "libraries/" - "libraries/**"
- "program_info/" - "program_info/**"
- "tests/" - "tests/**"
# Files # Files
- "CMakeLists.txt" - "CMakeLists.txt"

View File

@ -16,16 +16,16 @@ on:
# Build files # Build files
- "**.nix" - "**.nix"
- "nix/" - "nix/**"
- "flake.lock" - "flake.lock"
# Directories # Directories
- "buildconfig/" - "buildconfig/**"
- "cmake/" - "cmake/**"
- "launcher/" - "launcher/**"
- "libraries/" - "libraries/**"
- "program_info/" - "program_info/**"
- "tests/" - "tests/**"
# Files # Files
- "CMakeLists.txt" - "CMakeLists.txt"
@ -38,19 +38,21 @@ on:
# File types # File types
- "**.cpp" - "**.cpp"
- "**.h" - "**.h"
- "**.java"
- "**.ui"
# Build files # Build files
- "**.nix" - "**.nix"
- "nix/" - "nix/**"
- "flake.lock" - "flake.lock"
# Directories # Directories
- "buildconfig/" - "buildconfig/**"
- "cmake/" - "cmake/**"
- "launcher/" - "launcher/**"
- "libraries/" - "libraries/**"
- "program_info/" - "program_info/**"
- "tests/" - "tests/**"
# Files # Files
- "CMakeLists.txt" - "CMakeLists.txt"

View File

@ -12,15 +12,15 @@
"type": "equals", "type": "equals",
"lhs": "${hostSystemName}", "lhs": "${hostSystemName}",
"rhs": "Windows" "rhs": "Windows"
} },
"generator": "Ninja"
}, },
{ {
"name": "windows_msvc_arm64_cross_base", "name": "windows_msvc_arm64_cross_base",
"hidden": true, "hidden": true,
"inherits": [ "inherits": [
"windows_msvc_base" "windows_msvc_base"
], ]
"architecture": "arm64"
}, },
{ {
"name": "windows_msvc_debug", "name": "windows_msvc_debug",
@ -28,8 +28,7 @@
"base_debug", "base_debug",
"windows_msvc_base" "windows_msvc_base"
], ],
"displayName": "Windows MSVC (Debug)", "displayName": "Windows MSVC (Debug)"
"generator": "Ninja"
}, },
{ {
"name": "windows_msvc_release", "name": "windows_msvc_release",
@ -98,11 +97,7 @@
], ],
"displayName": "Windows MSVC (Release)", "displayName": "Windows MSVC (Release)",
"configurePreset": "windows_msvc_release", "configurePreset": "windows_msvc_release",
"configuration": "Release", "configuration": "Release"
"nativeToolOptions": [
"/p:UseMultiToolTask=true",
"/p:EnforceProcessCountAcrossBuilds=true"
]
}, },
{ {
"name": "windows_msvc_arm64_cross_debug", "name": "windows_msvc_arm64_cross_debug",
@ -111,11 +106,7 @@
], ],
"displayName": "Windows MSVC (ARM64 cross, Debug)", "displayName": "Windows MSVC (ARM64 cross, Debug)",
"configurePreset": "windows_msvc_arm64_cross_debug", "configurePreset": "windows_msvc_arm64_cross_debug",
"configuration": "Debug", "configuration": "Debug"
"nativeToolOptions": [
"/p:UseMultiToolTask=true",
"/p:EnforceProcessCountAcrossBuilds=true"
]
}, },
{ {
"name": "windows_msvc_arm64_cross_release", "name": "windows_msvc_arm64_cross_release",
@ -124,11 +115,7 @@
], ],
"displayName": "Windows MSVC (ARM64 cross, Release)", "displayName": "Windows MSVC (ARM64 cross, Release)",
"configurePreset": "windows_msvc_arm64_cross_release", "configurePreset": "windows_msvc_arm64_cross_release",
"configuration": "Release", "configuration": "Release"
"nativeToolOptions": [
"/p:UseMultiToolTask=true",
"/p:EnforceProcessCountAcrossBuilds=true"
]
}, },
{ {
"name": "windows_msvc_ci", "name": "windows_msvc_ci",
@ -137,11 +124,7 @@
], ],
"displayName": "Windows MSVC (CI)", "displayName": "Windows MSVC (CI)",
"configurePreset": "windows_msvc_ci", "configurePreset": "windows_msvc_ci",
"configuration": "Release", "configuration": "Release"
"nativeToolOptions": [
"/p:UseMultiToolTask=true",
"/p:EnforceProcessCountAcrossBuilds=true"
]
}, },
{ {
"name": "windows_msvc_arm64_cross_ci", "name": "windows_msvc_arm64_cross_ci",
@ -150,11 +133,7 @@
], ],
"displayName": "Windows MSVC (ARM64 cross, CI)", "displayName": "Windows MSVC (ARM64 cross, CI)",
"configurePreset": "windows_msvc_arm64_cross_ci", "configurePreset": "windows_msvc_arm64_cross_ci",
"configuration": "Release", "configuration": "Release"
"nativeToolOptions": [
"/p:UseMultiToolTask=true",
"/p:EnforceProcessCountAcrossBuilds=true"
]
} }
], ],
"testPresets": [ "testPresets": [

View File

@ -1458,6 +1458,12 @@ if(WIN32 OR (DEFINED Launcher_BUILD_FILELINKER AND Launcher_BUILD_FILELINKER))
add_executable("${Launcher_Name}_filelink" WIN32 filelink/filelink_main.cpp) add_executable("${Launcher_Name}_filelink" WIN32 filelink/filelink_main.cpp)
target_sources("${Launcher_Name}_filelink" PRIVATE filelink/filelink.exe.manifest) target_sources("${Launcher_Name}_filelink" PRIVATE filelink/filelink.exe.manifest)
# HACK: Fix manifest issues with Ninja in release mode (and only release mode) and MSVC
# I have no idea why this works or why it's needed. UPDATE THIS IF YOU EDIT THE MANIFEST!!! -@getchoo
# Thank you 2018 CMake mailing list thread https://cmake.cmake.narkive.com/LnotZXus/conflicting-msvc-manifests
if(MSVC)
set_property(TARGET "${Launcher_Name}_filelink" PROPERTY LINK_FLAGS "/MANIFESTUAC:level='requireAdministrator'")
endif()
target_link_libraries("${Launcher_Name}_filelink" filelink_logic) target_link_libraries("${Launcher_Name}_filelink" filelink_logic)