Skip to content

Commit 227e6b2

Browse files
committed
Fix AppImage packaging when linuxdeploy-plugin-qt picks a Qt 5 qmake
1 parent c53aab6 commit 227e6b2

1 file changed

Lines changed: 55 additions & 1 deletion

File tree

cmake/PackagingLinux.cmake

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,60 @@ set(APPDIR_USR ${APPDIR}/usr)
66
set(LINUXDEPLOY ${CMAKE_BINARY_DIR}/linuxdeploy-x86_64.AppImage)
77
set(LINUXDEPLOY_QT ${CMAKE_BINARY_DIR}/linuxdeploy-plugin-qt-x86_64.AppImage)
88

9+
function(resolve_qt6_qmake out_var)
10+
set(qt6_qmake_candidates "")
11+
12+
find_package(Qt6CoreTools QUIET)
13+
if(TARGET Qt6::qmake)
14+
get_target_property(qt6_qmake_target Qt6::qmake IMPORTED_LOCATION)
15+
if(qt6_qmake_target)
16+
list(APPEND qt6_qmake_candidates "${qt6_qmake_target}")
17+
endif()
18+
endif()
19+
20+
find_program(qmake6_executable
21+
NAMES qmake6 qmake-qt6 qmake
22+
HINTS
23+
/usr/lib/qt6/bin
24+
/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/qt6/bin
25+
)
26+
if(qmake6_executable)
27+
list(APPEND qt6_qmake_candidates "${qmake6_executable}")
28+
endif()
29+
30+
list(REMOVE_DUPLICATES qt6_qmake_candidates)
31+
32+
foreach(qmake_candidate IN LISTS qt6_qmake_candidates)
33+
execute_process(
34+
COMMAND "${qmake_candidate}" -query QT_VERSION
35+
OUTPUT_VARIABLE qmake_qt_version
36+
OUTPUT_STRIP_TRAILING_WHITESPACE
37+
ERROR_QUIET
38+
RESULT_VARIABLE qmake_result
39+
)
40+
if(qmake_result EQUAL 0 AND qmake_qt_version MATCHES "^6\\.")
41+
set(${out_var} "${qmake_candidate}" PARENT_SCOPE)
42+
return()
43+
endif()
44+
endforeach()
45+
46+
set(${out_var} "" PARENT_SCOPE)
47+
endfunction()
48+
49+
resolve_qt6_qmake(QT6_QMAKE)
50+
if(QT6_QMAKE)
51+
message(STATUS "Using Qt qmake for AppImage packaging: ${QT6_QMAKE}")
52+
set(APPIMAGE_ENV_VARS
53+
LDAI_OUTPUT=NotepadNext-v${PROJECT_VERSION}-x86_64.AppImage
54+
QMAKE=${QT6_QMAKE}
55+
)
56+
else()
57+
message(WARNING "Could not locate a Qt 6 qmake binary for AppImage packaging")
58+
set(APPIMAGE_ENV_VARS
59+
LDAI_OUTPUT=NotepadNext-v${PROJECT_VERSION}-x86_64.AppImage
60+
)
61+
endif()
62+
963
install(TARGETS NotepadNext
1064
RUNTIME DESTINATION bin
1165
)
@@ -40,7 +94,7 @@ add_custom_target(download_linuxdeploy
4094

4195
add_custom_target(appimage
4296
COMMAND ${CMAKE_COMMAND} -E env
43-
LDAI_OUTPUT=NotepadNext-v${PROJECT_VERSION}-x86_64.AppImage
97+
${APPIMAGE_ENV_VARS}
4498
${LINUXDEPLOY}
4599
--appdir ${APPDIR}
46100
--executable ${APPDIR_USR}/bin/NotepadNext

0 commit comments

Comments
 (0)