Skip to content

Commit ef1cf40

Browse files
committed
simplified qmake check
1 parent 227e6b2 commit ef1cf40

1 file changed

Lines changed: 32 additions & 46 deletions

File tree

cmake/PackagingLinux.cmake

Lines changed: 32 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,60 +6,46 @@ 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 "")
9+
set(APPIMAGE_ENV_VARS
10+
LDAI_OUTPUT=NotepadNext-v${PROJECT_VERSION}-x86_64.AppImage
11+
)
1112

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()
13+
if(DEFINED ENV{QMAKE} AND NOT "$ENV{QMAKE}" STREQUAL "")
14+
set(APPIMAGE_QMAKE "$ENV{QMAKE}")
15+
else()
16+
find_program(APPIMAGE_QMAKE NAMES qmake)
17+
endif()
1918

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
19+
if(NOT APPIMAGE_QMAKE)
20+
message(FATAL_ERROR
21+
"Could not find qmake for AppImage packaging.\n"
22+
"Please configure with a Qt 6 qmake, for example:\n"
23+
" QMAKE=$(which qmake6) cmake -S . -B build -DAPP_DISTRIBUTION=AppImage"
2524
)
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()
25+
endif()
4526

46-
set(${out_var} "" PARENT_SCOPE)
47-
endfunction()
27+
execute_process(
28+
COMMAND "${APPIMAGE_QMAKE}" -query QT_VERSION
29+
OUTPUT_VARIABLE APPIMAGE_QT_VERSION
30+
OUTPUT_STRIP_TRAILING_WHITESPACE
31+
ERROR_QUIET
32+
RESULT_VARIABLE APPIMAGE_QMAKE_RESULT
33+
)
4834

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
35+
if(NOT APPIMAGE_QMAKE_RESULT EQUAL 0 OR NOT APPIMAGE_QT_VERSION MATCHES "^6\\.")
36+
message(FATAL_ERROR
37+
"AppImage packaging requires a Qt 6 qmake, but CMake found:\n"
38+
" ${APPIMAGE_QMAKE}\n"
39+
"Reported Qt version:\n"
40+
" ${APPIMAGE_QT_VERSION}\n"
41+
"Please re-run CMake with a Qt 6 qmake, for example:\n"
42+
" QMAKE=$(which qmake6) cmake -S . -B build -DAPP_DISTRIBUTION=AppImage"
6043
)
6144
endif()
6245

46+
message(STATUS "Using qmake for AppImage packaging: ${APPIMAGE_QMAKE}")
47+
list(APPEND APPIMAGE_ENV_VARS QMAKE=${APPIMAGE_QMAKE})
48+
6349
install(TARGETS NotepadNext
6450
RUNTIME DESTINATION bin
6551
)

0 commit comments

Comments
 (0)