Skip to content

Commit cd1a635

Browse files
committed
workflow: msvc ci cd on windows used instead of clang-cl
1 parent 5617b88 commit cd1a635

File tree

4 files changed

+63
-85
lines changed

4 files changed

+63
-85
lines changed

.github/workflows/cmake-multi-platform.yml

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,39 +17,46 @@ jobs:
1717
compiler: [clang]
1818
include:
1919
- os: ubuntu-latest
20-
compiler: clang
21-
c_compiler: clang
22-
cxx_compiler: clang++
20+
preset: clang-full
2321
- os: windows-latest
24-
compiler: clang
25-
c_compiler: clang-cl
26-
cxx_compiler: clang-cl
22+
preset: msvc-full
2723

2824
steps:
2925
- uses: actions/checkout@v4
3026

31-
- name: Install LLVM (Windows)
32-
if: matrix.os == 'windows-latest'
33-
run: choco install ninja
27+
- name: Cache CPM dependencies
28+
uses: actions/cache@v4
29+
with:
30+
path: |
31+
${{ github.workspace }}/_deps
32+
~/.cache/CPM
33+
key: cpm-${{ matrix.os }}-${{ hashFiles('CMakeLists.txt', 'cmake/**') }}
34+
restore-keys: |
35+
cpm-${{ matrix.os }}-
3436
3537
- name: Install Linux deps
3638
if: matrix.os == 'ubuntu-latest'
3739
run: |
38-
sudo apt-get update
39-
sudo apt-get install -y libgl-dev libgles-dev build-essential git make \
40-
pkg-config cmake ninja-build gnome-desktop-testing libasound2-dev libpulse-dev \
41-
libaudio-dev libjack-dev libsndio-dev libx11-dev libxext-dev \
42-
libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev libxss-dev \
43-
libxkbcommon-dev libdrm-dev libgbm-dev libgl1-mesa-dev libgles2-mesa-dev \
44-
libegl1-mesa-dev libdbus-1-dev libibus-1.0-dev libudev-dev fcitx-libs-dev
40+
sudo apt-get update -qq
41+
sudo apt-get install -y --no-install-recommends \
42+
libwayland-dev \
43+
libxkbcommon-dev \
44+
libegl1-mesa-dev \
45+
libgles2-mesa-dev \
46+
libgl1-mesa-dev \
47+
libdbus-1-dev \
48+
libudev-dev \
49+
libasound2-dev \
50+
ninja-build \
51+
clang
4552
4653
- name: Configure CMake
47-
run: cmake --workflow --preset clang-full
54+
run: cmake --workflow --preset ${{ matrix.preset }}
4855

4956
- name: Upload Artifacts
5057
uses: actions/upload-artifact@v4
5158
with:
52-
name: ${{ matrix.os }}-${{ matrix.compiler }}-package
59+
name: ${{ matrix.os }}-${{ matrix.preset }}-package
5360
path: |
5461
build/clang/*.tar.gz
5562
build/clang/*.rpm

CMakePresets.json

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717
"cacheVariables": {
1818
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
1919
"CMAKE_COLOR_DIAGNOSTICS": "ON"
20-
},
21-
"environment": {
22-
"NINJA_STATUS": "[%f/%t] "
2320
}
2421
},
2522
{
@@ -40,9 +37,6 @@
4037
"type": "equals",
4138
"lhs": "${hostSystemName}",
4239
"rhs": "Windows"
43-
},
44-
"cacheVariables": {
45-
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL"
4640
}
4741
},
4842
{
@@ -52,12 +46,7 @@
5246
"inherits": "base",
5347
"cacheVariables": {
5448
"CMAKE_C_COMPILER": "clang",
55-
"CMAKE_CXX_COMPILER": "clang++",
56-
"CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic"
57-
},
58-
"environment": {
59-
"CC": "clang",
60-
"CXX": "clang++"
49+
"CMAKE_CXX_COMPILER": "clang++"
6150
}
6251
},
6352
{
@@ -67,12 +56,7 @@
6756
"inherits": "base",
6857
"cacheVariables": {
6958
"CMAKE_C_COMPILER": "gcc",
70-
"CMAKE_CXX_COMPILER": "g++",
71-
"CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -fdiagnostics-color=always"
72-
},
73-
"environment": {
74-
"CC": "gcc",
75-
"CXX": "g++"
59+
"CMAKE_CXX_COMPILER": "g++"
7660
}
7761
}
7862
],

cmake/pkg/package-config.cmake

Lines changed: 26 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
include(CPack)
2-
31
set(PROJECT_VENDOR "geugenm")
42
set(PROJECT_CONTACT "[email protected]")
53
set(PROJECT_LICENSE "GPL-2.0") # Use SPDX identifier (required by DEB/RPM)
@@ -8,7 +6,6 @@ set(PROJECT_GROUP "System")
86
# Optional: detect architecture automatically (don't hardcode)
97
if(NOT DEFINED PROJECT_ARCH)
108
set(PROJECT_ARCH ${CMAKE_SYSTEM_PROCESSOR})
11-
# Normalize common names
129
if(PROJECT_ARCH STREQUAL "x86_64")
1310
set(PROJECT_ARCH "amd64") # Debian uses 'amd64'
1411
elseif(PROJECT_ARCH MATCHES "aarch64|arm64")
@@ -17,75 +14,38 @@ if(NOT DEFINED PROJECT_ARCH)
1714
endif()
1815

1916
set(PROJECT_ICON_FILE "${CMAKE_CURRENT_LIST_DIR}/icon.png")
20-
set(PROJECT_LICENSE_FILE "${CMAKE_SOURCE_DIR}/license") # uppercase (convention)
17+
set(PROJECT_LICENSE_FILE "${CMAKE_SOURCE_DIR}/license")
2118
set(PROJECT_README_FILE "${CMAKE_SOURCE_DIR}/readme.md")
2219

2320
configure_file("${CMAKE_CURRENT_LIST_DIR}/package.desktop.in"
2421
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.desktop" @ONLY)
2522

26-
# Documentation
27-
install(
28-
FILES "${PROJECT_README_FILE}" "${PROJECT_LICENSE_FILE}"
29-
DESTINATION "share/doc/${PROJECT_NAME}"
30-
COMPONENT documentation
31-
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
32-
33-
# Icon (standard locations)
34-
install(FILES "${PROJECT_ICON_FILE}" DESTINATION "share/pixmaps"
35-
RENAME "${PROJECT_NAME}.png")
36-
install(FILES "${PROJECT_ICON_FILE}"
37-
DESTINATION "share/icons/hicolor/256x256/apps"
38-
RENAME "${PROJECT_NAME}.png")
39-
40-
# Desktop entry (Linux GUI menu)
41-
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.desktop"
42-
DESTINATION "share/applications")
43-
44-
cpack_add_component(
45-
documentation
46-
DISPLAY_NAME "Documentation"
47-
DESCRIPTION "Project README and license"
48-
GROUP "Documentation")
49-
50-
# Optional: add 'runtime' component if you have executables
51-
# cpack_add_component(runtime ...)
52-
5323
# === CPack Core Configuration ===
5424
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
5525
set(CPACK_PACKAGE_VENDOR "${PROJECT_VENDOR}")
5626
set(CPACK_PACKAGE_CONTACT "${PROJECT_CONTACT}")
5727
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}")
5828
set(CPACK_PACKAGE_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}")
59-
60-
# Use SPDX license (required for DEB/RPM)
6129
set(CPACK_PACKAGE_LICENSE "${PROJECT_LICENSE}")
62-
63-
# Resources
6430
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_LICENSE_FILE}")
6531
set(CPACK_RESOURCE_FILE_README "${PROJECT_README_FILE}")
6632

67-
# Description file (optional)
6833
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_LIST_DIR}/description.txt")
6934
if(NOT EXISTS "${CPACK_PACKAGE_DESCRIPTION_FILE}")
70-
# Fallback to README
7135
set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_README_FILE}")
7236
endif()
7337

74-
# Icon (used by macOS/Windows installers)
7538
set(CPACK_PACKAGE_ICON "${PROJECT_ICON_FILE}")
7639

7740
# === Generator-Specific Settings ===
7841

7942
# DEB
80-
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${PROJECT_CONTACT}")
81-
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE_URL}")
82-
set(CPACK_DEBIAN_PACKAGE_SECTION "devel") # or "games", "utils", etc.
43+
set(CPACK_DEBIAN_PACKAGE_SECTION "devel")
8344
set(CPACK_DEBIAN_PACKAGE_PRIORITY "optional")
8445

8546
# RPM
86-
set(CPACK_RPM_PACKAGE_LICENSE "${PROJECT_LICENSE}") # SPDX
47+
set(CPACK_RPM_PACKAGE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
8748
set(CPACK_RPM_PACKAGE_GROUP "${PROJECT_GROUP}")
88-
set(CPACK_RPM_PACKAGE_URL "${PROJECT_HOMEPAGE_URL}")
8949
set(CPACK_RPM_PACKAGE_AUTOREQPROV "yes")
9050

9151
# macOS
@@ -98,3 +58,26 @@ endif()
9858
set(CPACK_NSIS_MODIFY_PATH ON)
9959
set(CPACK_NSIS_MUI_ICON "${PROJECT_ICON_FILE}")
10060
set(CPACK_NSIS_MUI_UNIICON "${PROJECT_ICON_FILE}")
61+
62+
include(CPack)
63+
64+
cpack_add_component(
65+
documentation
66+
DISPLAY_NAME "Documentation"
67+
DESCRIPTION "Project README and license"
68+
GROUP "Documentation")
69+
70+
install(
71+
FILES "${PROJECT_README_FILE}" "${PROJECT_LICENSE_FILE}"
72+
DESTINATION "share/doc/${PROJECT_NAME}"
73+
COMPONENT documentation
74+
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
75+
76+
install(FILES "${PROJECT_ICON_FILE}" DESTINATION "share/pixmaps"
77+
RENAME "${PROJECT_NAME}.png")
78+
install(FILES "${PROJECT_ICON_FILE}"
79+
DESTINATION "share/icons/hicolor/256x256/apps"
80+
RENAME "${PROJECT_NAME}.png")
81+
82+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.desktop"
83+
DESTINATION "share/applications")

cmake/pkg/package.desktop.in

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,22 @@ Type=Application
33
Name=@PROJECT_NAME@
44
GenericName=@PROJECT_NAME@
55
Comment=@PROJECT_DESCRIPTION@
6-
Exec=main %F
7-
Icon=icon
6+
Exec=@PROJECT_NAME@ %F
7+
Icon=@PROJECT_NAME@
88
Terminal=false
9-
Categories=Utility;Development;
9+
Categories=Utility;
1010
Keywords=cpp;utility;command-line;linux;
1111
StartupNotify=true
12+
MimeType=
1213
Actions=About;Help;
1314

15+
# Required for AppImage/AppCenter compliance
16+
X-Desktop-File-Install-Version=1.0
17+
1418
[Desktop Action About]
1519
Name=About @PROJECT_NAME@
16-
Exec=xdg-open @PROJECT_HOMEPAGE_URL@
20+
Exec=xdg-open "@PROJECT_HOMEPAGE_URL@"
1721

1822
[Desktop Action Help]
19-
Name=Get Help
20-
Exec=xdg-open @PROJECT_HOMEPAGE_URL@
23+
Name=Get Help Online
24+
Exec=xdg-open "@PROJECT_HOMEPAGE_URL@"

0 commit comments

Comments
 (0)