Skip to content

Commit d9a62fe

Browse files
committed
Add Qt binaries to MSVC package
Signed-off-by: Martin <[email protected]>
1 parent 795b78f commit d9a62fe

File tree

2 files changed

+53
-28
lines changed

2 files changed

+53
-28
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
get_target_property(QT5_BIN_DIR Qt5::Core LOCATION)
2+
get_filename_component(QT5_BIN_DIR "${QT5_BIN_DIR}" DIRECTORY)
3+
if (NOT WIN32 OR NOT EXISTS "${QT5_BIN_DIR}/windeployqt.exe")
4+
return()
5+
endif()
6+
7+
# install Qt Dlls into the binary dir on windows platforms
8+
if (MSVC)
9+
add_custom_command(TARGET ${PROJECT_NAME}
10+
POST_BUILD
11+
# COMMAND "${QT5_BIN_DIR}/qtenv2.bat"
12+
COMMAND "${QT5_BIN_DIR}/windeployqt" --no-translations --compiler-runtime "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/${PROJECT_NAME}.exe"
13+
WORKING_DIRECTORY "${QT5_BIN_DIR}"
14+
COMMENT "Copy Qt5 dlls for ${PROJECT_NAME}"
15+
)
16+
else()
17+
if ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo")
18+
set(ADD_OPT "--release")
19+
endif()
20+
add_custom_command(TARGET ${PROJECT_NAME}
21+
POST_BUILD
22+
# COMMAND "${QT5_BIN_DIR}/qtenv2.bat"
23+
COMMAND "${QT5_BIN_DIR}/windeployqt" --no-translations --compiler-runtime ${ADD_OPT} "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.exe"
24+
WORKING_DIRECTORY "${QT5_BIN_DIR}"
25+
COMMENT "Copy Qt5 dlls for ${PROJECT_NAME}"
26+
)
27+
endif()

openhantek/CMakeLists.txt

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,18 @@
22

33
project(OpenHantek CXX)
44

5-
if (WIN32)
6-
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
7-
set(CMAKE_EXE_LINKER_FLAGS "-s")
8-
set(EXECTYPE WIN32)
9-
endif()
10-
115
find_package(Qt5Widgets REQUIRED)
126
find_package(Qt5PrintSupport REQUIRED)
137
find_package(Qt5OpenGL REQUIRED)
148
find_package(OpenGL)
9+
set(CMAKE_AUTOMOC ON)
10+
set(CMAKE_AUTOUIC ON)
11+
set(CMAKE_AUTORCC ON)
1512

1613
if (Qt5Widgets_VERSION VERSION_LESS 5.4.0)
1714
message(FATAL_ERROR "Minimum supported Qt5 version is 5.4.0!")
18-
else()
19-
message("-- Qt5 version is ${Qt5Widgets_VERSION}")
2015
endif()
2116

22-
set(CMAKE_AUTOMOC ON)
23-
set(CMAKE_AUTOUIC ON)
24-
set(CMAKE_AUTORCC ON)
25-
2617
# include directories
2718
set(CMAKE_INCLUDE_CURRENT_DIR ON)
2819
include_directories(src/ src/hantekdso src/widgets src/docks src/configdialog)
@@ -33,7 +24,7 @@ file(GLOB_RECURSE HEADERS "src/*.h")
3324
file(GLOB_RECURSE UI "src/*.ui")
3425
file(GLOB_RECURSE QRC "res/*.qrc")
3526

36-
if (WIN32)
27+
if(WIN32)
3728
file(GLOB_RECURSE RC "res/*.rc")
3829
endif()
3930

@@ -43,9 +34,16 @@ add_custom_target(format SOURCES ".clang-format"
4334
# here the translation magic happens
4435
include(translations/Translations.cmake)
4536

37+
set(EXECTYPE "")
38+
if(WIN32 AND MINGW)
39+
set(EXECTYPE WIN32)
40+
endif()
41+
42+
option(USE_OPENHANTEK_DRIVER "Use OpenHantek Windows driver" ON)
43+
4644
# Enable MacOSX bundle magic in the next line
4745
option(BUILD_MACOSX_BUNDLE "Build MacOS app bundle" ON)
48-
46+
#
4947
if( APPLE AND BUILD_MACOSX_BUNDLE )
5048
set( EXECTYPE MACOSX_BUNDLE )
5149
set( MACOSX_BUNDLE_BUNDLE_NAME "${PROJECT_NAME}" )
@@ -55,8 +53,8 @@ if( APPLE AND BUILD_MACOSX_BUNDLE )
5553
set( MACOSX_BUNDLE_BUNDLE_VERSION ${VERSION} )
5654
string(TIMESTAMP THISYEAR "%Y")
5755
set( MACOSX_BUNDLE_COPYRIGHT "(C) 2012-${THISYEAR} OpenHantek community" )
58-
set( MACOSX_BUNDLE_ICON_FILE OpenHantek.icns )
59-
set( ICONS ${CMAKE_CURRENT_SOURCE_DIR}/res/images/OpenHantek.icns )
56+
set( MACOSX_BUNDLE_ICON_FILE openhantek.icns )
57+
set( ICONS ${CMAKE_CURRENT_SOURCE_DIR}/res/images/openhantek.icns )
6058
set_source_files_properties( ${ICONS} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources" )
6159
endif()
6260

@@ -67,38 +65,38 @@ target_link_libraries(${PROJECT_NAME} Qt5::Widgets Qt5::PrintSupport Qt5::OpenGL
6765
target_compile_features(${PROJECT_NAME} PRIVATE cxx_range_for)
6866

6967
if(MSVC)
70-
target_compile_options(${PROJECT_NAME} PRIVATE "/W4" "/wd4251" "/wd4127" "/wd4275" "/wd4200" "/nologo" "/J" "/Zi")
71-
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:DEBUG>:/MDd>")
72-
include(../cmake/docs_on_windows.cmake)
7368
include(../cmake/fftw_on_windows.cmake)
7469
include(../cmake/libusb_on_windows.cmake)
70+
include(../cmake/copy_qt5_dlls_to_bin_dir.cmake)
71+
target_compile_options(${PROJECT_NAME} PRIVATE "/W4" "/wd4251" "/wd4127" "/wd4275" "/wd4200" "/nologo" "/J" "/Zi")
72+
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:DEBUG>:/MDd>")
7573
else()
7674
if( APPLE AND BUILD_MACOSX_BUNDLE )
7775
# Use own template that defines NSPrincipalClass=NSApplication & NSHighResolutionCapable=True
7876
set_target_properties( ${PROJECT_NAME} PROPERTIES
7977
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_LIST_DIR}/../cmake/OpenHantekBundleInfo.plist.in
8078
)
8179
endif()
82-
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wno-long-long -pedantic)
83-
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:DEBUG>:-DDEBUG>")
84-
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:DEBUG>:-O0>")
85-
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:RELEASE>:-fno-rtti>")
86-
8780
find_package(libusb REQUIRED)
8881
target_include_directories(${PROJECT_NAME} PRIVATE ${LIBUSB_INCLUDE_DIRS})
8982
target_link_libraries(${PROJECT_NAME} ${LIBUSB_LIBRARIES})
9083

84+
find_package(Threads REQUIRED)
85+
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})
86+
9187
find_package(FFTW REQUIRED)
9288
target_include_directories(${PROJECT_NAME} PRIVATE ${FFTW_INCLUDE_DIRS})
9389
target_link_libraries(${PROJECT_NAME} ${FFTW_LIBRARIES})
9490

95-
find_package(Threads REQUIRED)
96-
target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})
91+
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wno-long-long -pedantic)
92+
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:DEBUG>:-DDEBUG>")
93+
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:DEBUG>:-O0>")
94+
target_compile_options(${PROJECT_NAME} PRIVATE "$<$<CONFIG:RELEASE>:-fno-rtti>")
9795
endif()
9896

99-
if (WIN32)
97+
if(WIN32)
98+
include(../cmake/docs_on_windows.cmake)
10099
include(../cmake/windows_driver.cmake)
101-
include(../cmake/windows_documents.cmake)
102100
endif()
103101

104102
# install commands

0 commit comments

Comments
 (0)