Skip to content

Commit 53f8412

Browse files
Collect the correct QT dlls on Windows
1 parent 93427d3 commit 53f8412

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

cmake/windows/BundleWindows.cmake.in

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,29 @@ set(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@")
77
set(CMAKE_CURRENT_BINARY_DIR "@CMAKE_CURRENT_BINARY_DIR@")
88

99
# Set windeployqt args
10-
set(ARGS --dry-run --no-opengl-sw --list mapping)
10+
set(QT5_ARGS)
1111
if(@QT_VERSION_MAJOR@ EQUAL 5)
12-
set(EXTRA_ARGS --no-angle)
12+
set(QT5_ARGS --no-angle)
13+
endif()
14+
15+
find_file(QT_PATHS "qtpaths.bat" PATHS @CMAKE_PREFIX_PATH@ PATH_SUFFIXES bin)
16+
if(QT_PATHS)
17+
set(QT_PATHS --qtpaths=${QT_PATHS})
18+
else()
19+
set(QT_PATHS "")
1320
endif()
1421

1522
if(EXISTS @CMAKE_BINARY_DIR@/bin/@PROJECT_NAME@@CMAKE_EXECUTABLE_SUFFIX@)
1623
# Collect the runtime libraries
17-
get_filename_component(QT_BIN_DIR "${QMAKE_EXECUTABLE}" DIRECTORY)
1824
execute_process(
19-
COMMAND "${CMAKE_COMMAND}" -E env "PATH=${QT_BIN_DIR}" "@WINDEPLOYQT_EXECUTABLE@"
20-
${ARGS}
21-
${EXTRA_ARGS}
25+
COMMAND "${CMAKE_COMMAND}" -E env "PATH=@QT_BIN_DIR@" "@WINDEPLOYQT_EXECUTABLE@"
26+
${QT_PATHS}
27+
--dry-run
28+
--no-opengl-sw
29+
${QT5_ARGS}
30+
--list mapping
2231
"@CMAKE_BINARY_DIR@/bin/@PROJECT_NAME@@CMAKE_EXECUTABLE_SUFFIX@"
23-
WORKING_DIRECTORY "${QT_BIN_DIR}/.."
32+
WORKING_DIRECTORY "@QT_BIN_DIR@/.."
2433
OUTPUT_VARIABLE DEPS
2534
OUTPUT_STRIP_TRAILING_WHITESPACE
2635
)

src/hyperiond/CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ if(WIN32)
1616
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")
1717

1818
# Search for windeployqt target (qt6 has the target natively) otherwise create it.
19+
get_filename_component(QT_BIN_DIR ${QMAKE_EXECUTABLE} DIRECTORY)
1920
if(NOT TARGET Qt${QT_VERSION_MAJOR}::windeployqt)
20-
get_filename_component(QT_BIN_DIR ${QMAKE_EXECUTABLE} DIRECTORY)
2121
find_program(WINDEPLOYQT_EXECUTABLE NAMES windeployqt HINTS ${QT_BIN_DIR})
2222
if(EXISTS ${WINDEPLOYQT_EXECUTABLE})
2323
add_executable(Qt${QT_VERSION_MAJOR}::windeployqt IMPORTED)
@@ -190,6 +190,13 @@ endif()
190190
if(WIN32 AND NOT DEFINED ENV{GITHUB_ACTIONS})
191191
if(TARGET Qt${QT_VERSION_MAJOR}::windeployqt)
192192
set(WINDEPLOYQT_PARAMS --verbose 0 --no-compiler-runtime --no-opengl-sw --no-system-d3d-compiler)
193+
194+
get_target_property(QT_QTPATHS_EXECUTABLE Qt${QT_VERSION_MAJOR}::qtpaths IMPORTED_LOCATION)
195+
find_file(QT_PATHS "qtpaths.bat" PATHS ${CMAKE_PREFIX_PATH} PATH_SUFFIXES bin)
196+
if(QT_PATHS)
197+
list(APPEND WINDEPLOYQT_PARAMS "--qtpaths=${QT_PATHS}")
198+
endif()
199+
193200
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
194201
COMMAND Qt${QT_VERSION_MAJOR}::windeployqt ${WINDEPLOYQT_PARAMS} "$<TARGET_FILE:${PROJECT_NAME}>"
195202
)

0 commit comments

Comments
 (0)