chore: do something make linux happy

This commit is contained in:
x-tools-author 2025-04-20 10:30:23 +08:00
parent ba625cc19f
commit 84f9125163
5 changed files with 28 additions and 32 deletions

View File

@ -91,8 +91,7 @@ jobs:
cd build
cmake ../ -DCMAKE_PREFIX_PATH='${{ github.workspace }}/Qt/${{env.QT_VERSION}}/linux_gcc_64' -DCMAKE_BUILD_TYPE:STRING=Release -G "Ninja"
cmake --build . --target xTools
cmake --build . --target xTools_deb
cmake --build . --target xTools_appimage
cmake --build . --target xTools_linux
- name: Upload Release Asset for Linux
run: |
dir bin/Linux/Release

View File

@ -45,4 +45,5 @@ jobs:
mkdir build
cd build
cmake -DCMAKE_PREFIX_PATH='${{ github.workspace }}/Qt/${{ matrix.version }}/${{ matrix.arch }}' -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" ../
cmake --build . --target all
cmake --build . --target xTools
cmake --build . --target xTools_linux

View File

@ -36,7 +36,7 @@ list(APPEND X_TOOLS_QT_COMPONENTS Network)
list(APPEND X_TOOLS_QT_COMPONENTS LinguistTools)
# Qt6 is preferred, but Qt5 is also supported
find_package(Qt NAMES Qt5 Qt6 REQUIRED COMPONENTS ${X_TOOLS_QT_COMPONENTS})
find_package(QT NAMES Qt5 Qt6 REQUIRED COMPONENTS ${X_TOOLS_QT_COMPONENTS})
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ${X_TOOLS_QT_COMPONENTS})
# --------------------------------------------------------------------------------------------------

View File

@ -20,7 +20,7 @@ function(x_build_deb target packetName friendlyName version icon)
list(APPEND args "-DargAssetName=${X_ASSET_NAME}")
foreach(arg ${args})
message(STATUS "[${package_type}]arg: ${arg}")
message(STATUS "[deb]arg: ${arg}")
endforeach()
# cmake-format: off

View File

@ -9,16 +9,18 @@
# * DargPackageType: deb or appimage
# * DargTargetFile: target file path
set(argWorkingDir ${argWorkingDir}/appimage)
# Remove old working dir then create a new one
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory ${argWorkingDir} -rf true)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${argWorkingDir}/usr/bin)
# Copy files
# cmake-format: off
message(STATUS "Copy file ${argTargetFile} to ${argWorkingDir}/usr/bin/${argPacketName}")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${argSrcDir}/cmake/linux/app
${argWorkingDir})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${argTargetFile}
${argWorkingDir}/usr/bin/${argPacketName})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory ${argSrcDir}/cmake/linux/app ${argWorkingDir})
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${argTargetFile} ${argWorkingDir}/usr/bin/${argPacketName})
# cmake-format: on
# Update control file
set(control_file ${argWorkingDir}/DEBIAN/control)
@ -53,26 +55,20 @@ set(old_text icon.png)
set(new_text ${argPacketName})
execute_process(COMMAND sed -i s/${old_text}/${new_text}/g ${desktop_file_name})
# cmake-format: off
if(${argPackageType} STREQUAL "deb")
execute_process(COMMAND ${argTool} usr/share/applications/${argPacketName}.desktop
-always-overwrite -bundle-non-qt-libs -qmake=${argQmakePath}
WORKING_DIRECTORY ${argWorkingDir})
execute_process(COMMAND ${CMAKE_COMMAND} -E rm AppRun -f WORKING_DIRECTORY ${argWorkingDir})
execute_process(COMMAND ${CMAKE_COMMAND} -E rm ${argPacketName}.desktop -f WORKING_DIRECTORY ${argWorkingDir})
execute_process(COMMAND ${CMAKE_COMMAND} -E rm ${argPacketName}.png -f WORKING_DIRECTORY ${argWorkingDir})
execute_process(COMMAND ${CMAKE_COMMAND} -E remove_directory usr/share/doc WORKING_DIRECTORY ${argWorkingDir})
execute_process(COMMAND dpkg -b ./ ${argAssetName}.deb WORKING_DIRECTORY ${argWorkingDir})
else()
execute_process(COMMAND ${CMAKE_COMMAND} -E env VERSION=v${argVersion} ${argTool}
usr/share/applications/${argPacketName}.desktop -always-overwrite
-bundle-non-qt-libs -qmake=${argQmakePath} -appimage
WORKING_DIRECTORY ${argWorkingDir})
# Rename the AppImage
file(GLOB appimages ${argWorkingDir}/*.AppImage)
foreach(appimage ${appimages})
execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${appimage} ${argAssetName}.AppImage WORKING_DIRECTORY ${argWorkingDir})
break()
endforeach()
endif()
# cmake-format: on
# Make deb directory from appimage
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory appimage deb WORKING_DIRECTORY ${argWorkingDir}/../)
# Make AppImage
execute_process(COMMAND ${CMAKE_COMMAND} -E env VERSION=v${argVersion} ${argTool}
usr/share/applications/${argPacketName}.desktop -always-overwrite
-bundle-non-qt-libs -qmake=${argQmakePath} -appimage
WORKING_DIRECTORY ${argWorkingDir})
# Rename the AppImage
file(GLOB appimages ${argWorkingDir}/*.AppImage)
foreach(appimage ${appimages})
execute_process(COMMAND ${CMAKE_COMMAND} -E rename ${appimage} ${argAssetName}.AppImage WORKING_DIRECTORY ${argWorkingDir})
endforeach()
# Make deb
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${argAssetName}.AppImage ../deb/usr/bin/${argPacketName} WORKING_DIRECTORY ${argWorkingDir})
execute_process(COMMAND dpkg -b ./ ${argAssetName}.deb WORKING_DIRECTORY ${argWorkingDir}/../deb)