Skip to content

Commit

Permalink
Convert Windows Release to CMake (#11317)
Browse files Browse the repository at this point in the history
  • Loading branch information
HTRamsey authored Apr 13, 2024
1 parent 6cfa927 commit 01ee87a
Show file tree
Hide file tree
Showing 7 changed files with 167 additions and 199 deletions.
92 changes: 92 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Windows

on:
push:
branches:
- master
- 'Stable*'
tags:
- 'v*'
paths-ignore:
- 'docs/**'
- 'android/**'
pull_request:
paths-ignore:
- 'docs/**'
- 'android/**'

jobs:
build:
runs-on: windows-latest

strategy:
matrix:
BuildType: [Debug, Release]

defaults:
run:
shell: cmd

env:
QT_VERSION: 6.6.3
ARTIFACT: QGroundControl-installer.exe

steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
submodules: recursive
fetch-tags: true

- name: Install Qt
uses: jurplel/install-qt-action@v3
with:
version: ${{ env.QT_VERSION }}
aqtversion: ==3.1.*
host: windows
target: desktop
arch: win64_msvc2019_64
dir: ${{ runner.temp }}
modules: qtcharts qtlocation qtpositioning qtspeech qt5compat qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d
setup-python: true
cache: ${{ github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}

- name: Install Gstreamer
uses: blinemedical/setup-gstreamer@v1
with:
version: 1.18.6
# run: choco install --no-progress gstreamer gstreamer-devel --version=1.18.6

- name: Install Dependencies
run: choco install --no-progress ninja -y

- name: Set up Visual Studio shell
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64

- name: Create build directory
run: mkdir ${{ runner.temp }}\shadow_build_dir

- name: Configure
working-directory: ${{ runner.temp }}\shadow_build_dir
run: cmake -S ${{ github.workspace }} -B . -G Ninja ^
-DCMAKE_BUILD_TYPE=${{ matrix.BuildType }} ^
-DQGC_STABLE_BUILD=${{ github.ref_type == 'tag' || contains(github.ref, 'Stable') && 'ON' || 'OFF' }}

- name: Build
working-directory: ${{ runner.temp }}\shadow_build_dir
run: cmake --build . --target all --config ${{ matrix.BuildType }}

- name: Install
working-directory: ${{ runner.temp }}\shadow_build_dir
run: cmake --install . --config ${{ matrix.BuildType }}

- name: Upload Build File
uses: ./.github/actions/upload
if: matrix.BuildType == 'Release'
with:
artifact_name: ${{ env.ARTIFACT }}
aws_key_id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
source: ''
97 changes: 0 additions & 97 deletions .github/workflows/windows_debug.yml

This file was deleted.

101 changes: 0 additions & 101 deletions .github/workflows/windows_release.yml

This file was deleted.

2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -313,4 +313,6 @@ if(LINUX)
DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo/
)
install(SCRIPT "${CMAKE_SOURCE_DIR}/cmake/CreateAppImage.cmake")
elseif(WIN32)
install(SCRIPT "${CMAKE_SOURCE_DIR}/cmake/CreateWinInstaller.cmake")
endif()
45 changes: 45 additions & 0 deletions cmake/CreateWinInstaller.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
message(STATUS "Creating Win Installer")

include(CMakePrintHelpers)

# cmake_path(CONVERT "${CMAKE_CURRENT_LIST_DIR}/../deploy/windows" TO_CMAKE_PATH_LIST QGC_INSTALLER_SOURCE)
file(TO_NATIVE_PATH "${CMAKE_CURRENT_LIST_DIR}/../deploy/windows" QGC_INSTALLER_SOURCE)
file(TO_NATIVE_PATH "${QGC_INSTALLER_SOURCE}/WindowsQGC.ico" QGC_INSTALLER_ICON)
file(TO_NATIVE_PATH "${QGC_INSTALLER_SOURCE}/installheader.bmp" QGC_INSTALLER_HEADER_BITMAP)
file(TO_NATIVE_PATH "${QGC_INSTALLER_SOURCE}/driver.msi" QGC_INSTALLER_DRIVER_MSI)
file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}/QGroundControl-installer.exe" QGC_INSTALLER_OUT)
cmake_print_variables(QGC_INSTALLER_SOURCE QGC_INSTALLER_ICON QGC_INSTALLER_HEADER_BITMAP QGC_INSTALLER_DRIVER_MSI)

file(TO_NATIVE_PATH "${QGC_INSTALLER_SOURCE}/nullsoft_installer.nsi" QGC_NSIS_INSTALLER_SCRIPT)
set(_PF86 "PROGRAMFILES(x86)")
find_program(QGC_NSIS_INSTALLER_CMD makensis
PATH "$ENV{PROGRAMFILES}/NSIS" "$ENV{${_PF86}}/NSIS" "$ENV{PROGRAMW6432}/NSIS"
DOC "Path to the makensis utility."
)
cmake_print_variables(QGC_NSIS_INSTALLER_SCRIPT QGC_NSIS_INSTALLER_CMD)

set(QGC_NSIS_INSTALLER_PARAMETERS
/DDRIVER_MSI=${QGC_INSTALLER_DRIVER_MSI}
/DINSTALLER_ICON=${QGC_INSTALLER_ICON}
/DHEADER_BITMAP=${QGC_INSTALLER_HEADER_BITMAP}
/DAPPNAME=QGroundControl
/DEXENAME=QGroundControl
/DORGNAME=org.mavlink.qgroundcontrol
/DDESTDIR=${CMAKE_BINARY_DIR}/staging
/NOCD
"/XOutFile ${QGC_INSTALLER_OUT}"
${QGC_NSIS_INSTALLER_SCRIPT}
)
cmake_print_variables(QGC_NSIS_INSTALLER_PARAMETERS)

message(STATUS "Win Installer Command: \"${QGC_NSIS_INSTALLER_CMD} ${QGC_NSIS_INSTALLER_PARAMETERS}\"")

execute_process(
COMMAND ${QGC_NSIS_INSTALLER_CMD} ${QGC_NSIS_INSTALLER_PARAMETERS}
RESULT_VARIABLE NSIS_RESULT
OUTPUT_VARIABLE NSIS_OUTPUT
ERROR_VARIABLE NSIS_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE
)

cmake_print_variables(NSIS_RESULT NSIS_OUTPUT NSIS_ERROR)
Loading

0 comments on commit 01ee87a

Please sign in to comment.