WingHexExplorer2/CMakeLists.txt

566 lines
19 KiB
CMake

cmake_minimum_required(VERSION 3.18)
project(WingHexExplorer2 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(PROJECT_VERSION "2.2.3")
find_package(
QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network Concurrent
PrintSupport Xml LinguistTools)
find_package(
Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network Concurrent
PrintSupport Xml LinguistTools)
message("Build ${PROJECT_NAME} with ${CMAKE_BUILD_TYPE}.")
install(CODE "set(CMAKE_INSTALL_LOCAL_ONLY TRUE)" ALL_COMPONENTS)
option(WINGHEX_USE_FRAMELESS ON)
option(BUILD_TEST_PLUGIN OFF)
option(BUILD_SHARED_MEM_EXT OFF)
add_definitions(-DAS_NO_THREADS)
if(BUILD_TEST_PLUGIN)
add_subdirectory(TestPlugin)
endif()
if(BUILD_SHARED_MEM_EXT)
add_subdirectory(ShareMemoryDrv)
endif()
add_definitions(-DWINGHEX_VERSION="${PROJECT_VERSION}"
-DAPP_ORG="WingCloudStudio" -DAPP_NAME="${PROJECT_NAME}")
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/WINGHEX_VERSION" ${PROJECT_VERSION})
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/QT_VERSION" ${QT_VERSION_MAJOR})
if(WIN32)
find_package(QT NAMES Qt6 Qt5 REQUIRED AxContainer)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED AxContainer)
add_definitions(-DNOMINMAX)
endif()
if(${QT_VERSION_MAJOR} EQUAL 5)
if(Qt5Widgets_VERSION VERSION_LESS 5.14.0)
message(FATAL_ERROR "Minimum supported Qt5 version is 5.14!")
endif()
elseif(${QT_VERSION_MAJOR} EQUAL 6)
if(Qt6Widgets_VERSION VERSION_LESS 6.6.2)
message(FATAL_ERROR "Minimum supported Qt6 version is 6.6.2!")
endif()
else()
message(FATAL_ERROR "Unsupported Qt version!")
endif()
if(MSVC)
string(APPEND CMAKE_CXX_FLAGS " /utf-8")
string(APPEND CMAKE_C_FLAGS " /utf-8")
endif()
if(WINGHEX_USE_FRAMELESS)
option(QWINDOWKIT_BUILD_STATIC "Build static libraries" TRUE)
option(QWINDOWKIT_INSTALL "Install library" OFF)
add_subdirectory(3rdparty/qwindowkit)
add_definitions(-DWINGHEX_USE_FRAMELESS)
endif()
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
set(ADS_VERSION 4.3.1)
option(BUILD_EXAMPLES "Build the examples" FALSE)
option(BUILD_STATIC "Build the static library" TRUE)
add_subdirectory(3rdparty/cpptrace)
add_subdirectory(3rdparty/QHexView)
add_subdirectory(3rdparty/WingCodeEdit)
add_subdirectory(3rdparty/Qt-Advanced-Docking-System)
add_subdirectory(3rdparty/AngelScript/sdk/angelscript/projects/cmake)
set(ANGEL_SCRIPT_ADDON_ROOT
"${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/AngelScript/sdk/add_on")
set(ANGEL_SCRIPT_ADDON
${ANGEL_SCRIPT_ADDON_ROOT}/autowrapper/aswrappedcall.h
${ANGEL_SCRIPT_ADDON_ROOT}/contextmgr/contextmgr.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/contextmgr/contextmgr.h
${ANGEL_SCRIPT_ADDON_ROOT}/scriptany/scriptany.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/scriptany/scriptany.h
${ANGEL_SCRIPT_ADDON_ROOT}/scriptarray/scriptarray.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/scriptarray/scriptarray.h
${ANGEL_SCRIPT_ADDON_ROOT}/scriptgrid/scriptgrid.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/scriptgrid/scriptgrid.h
${ANGEL_SCRIPT_ADDON_ROOT}/scripthandle/scripthandle.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/scripthandle/scripthandle.h
${ANGEL_SCRIPT_ADDON_ROOT}/scripthelper/scripthelper.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/scripthelper/scripthelper.h
${ANGEL_SCRIPT_ADDON_ROOT}/scriptmath/scriptmath.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/scriptmath/scriptmath.h
${ANGEL_SCRIPT_ADDON_ROOT}/scriptmath/scriptmathcomplex.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/scriptmath/scriptmathcomplex.h
${ANGEL_SCRIPT_ADDON_ROOT}/serializer/serializer.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/serializer/serializer.h
${ANGEL_SCRIPT_ADDON_ROOT}/weakref/weakref.cpp
${ANGEL_SCRIPT_ADDON_ROOT}/weakref/weakref.h)
add_subdirectory(3rdparty/qtsingleapplication)
set(RIBBON_SRC
3rdparty/QWingRibbon/ribbon.cpp
3rdparty/QWingRibbon/ribbon.h
3rdparty/QWingRibbon/ribbonbuttongroup.cpp
3rdparty/QWingRibbon/ribbonbuttongroup.h
3rdparty/QWingRibbon/ribbonbuttongroup.ui
3rdparty/QWingRibbon/ribbontabcontent.cpp
3rdparty/QWingRibbon/ribbontabcontent.h
3rdparty/QWingRibbon/ribbontabcontent.ui)
set(QCONSOLEWIDGET_SRC
3rdparty/QConsoleWidget/QConsoleIODevice.cpp
3rdparty/QConsoleWidget/QConsoleIODevice.h
3rdparty/QConsoleWidget/QConsoleWidget.cpp
3rdparty/QConsoleWidget/QConsoleWidget.h
3rdparty/QConsoleWidget/commandhistorymanager.h
3rdparty/QConsoleWidget/commandhistorymanager.cpp)
set(DIALOG_SRC
src/dialog/framelessmainwindow.h
src/dialog/framelessmainwindow.cpp
src/dialog/mainwindow.cpp
src/dialog/mainwindow.h
src/dialog/settingdialog.cpp
src/dialog/settingdialog.h
src/dialog/settingdialog.ui
src/dialog/framelessdialogbase.h
src/dialog/framelessdialogbase.cpp
src/dialog/aboutsoftwaredialog.ui
src/dialog/aboutsoftwaredialog.cpp
src/dialog/aboutsoftwaredialog.h
src/dialog/fileinfodialog.cpp
src/dialog/fileinfodialog.h
src/dialog/encodingdialog.cpp
src/dialog/encodingdialog.h
src/dialog/metadialog.cpp
src/dialog/metadialog.h
src/dialog/scriptingdialog.h
src/dialog/scriptingdialog.cpp
src/dialog/finddialog.cpp
src/dialog/finddialog.h
src/dialog/checksumdialog.h
src/dialog/checksumdialog.cpp
src/dialog/colorpickerdialog.h
src/dialog/colorpickerdialog.cpp
src/dialog/colorpickerdialog.ui
src/dialog/splashdialog.ui
src/dialog/splashdialog.cpp
src/dialog/splashdialog.h
src/dialog/historydeldialog.h
src/dialog/historydeldialog.cpp
src/dialog/historydeldialog.ui
src/dialog/crashreport.h
src/dialog/crashreport.cpp
src/dialog/crashreport.ui
src/dialog/showtextdialog.cpp
src/dialog/showtextdialog.h
src/dialog/definitiondownload.cpp
src/dialog/definitiondownload.h)
set(CONTROL_SRC
src/control/codeedit.h
src/control/codeedit.cpp
src/control/editorview.h
src/control/editorview.cpp
src/control/toast.h
src/control/toast.cpp
src/control/scriptingconsole.cpp
src/control/scriptingconsole.h
src/control/scriptingconsolebase.h
src/control/scriptingconsolebase.cpp
src/control/gotowidget.h
src/control/gotowidget.cpp
src/control/gotowidget.ui
src/control/scripteditor.h
src/control/scripteditor.cpp
src/control/qcolorpicker_slider.hpp
src/control/qcolorpicker_slider.cpp
src/control/huecolorpickerslider.h
src/control/huecolorpickerslider.cpp
src/control/qtableviewext.h
src/control/qtableviewext.cpp
src/control/qlistviewext.h
src/control/qlistviewext.cpp
src/control/asobjtreewidget.h
src/control/asobjtreewidget.cpp
src/control/qtlonglongspinbox.cpp
src/control/qtlonglongspinbox.h
src/control/dockwidgettab.h
src/control/dockwidgettab.cpp
src/control/qhextextedit.h
src/control/qhextextedit.cpp
src/control/popupactionwidget.h
src/control/popupactionwidget.cpp
src/control/settingspopup.cpp
src/control/settingspopup.h
src/control/searchreplacewidget.cpp
src/control/searchreplacewidget.h
src/control/gotolinewidget.h
src/control/gotolinewidget.cpp
src/control/codeeditcontrolwidget.h
src/control/codeeditcontrolwidget.cpp
src/control/scrollablelabel.h
src/control/scrollablelabel.cpp)
set(CLASS_SRC
src/class/logger.cpp
src/class/logger.h
src/class/skinmanager.cpp
src/class/skinmanager.h
src/class/workspacemanager.cpp
src/class/workspacemanager.h
src/class/eventfilter.h
src/class/qkeysequences.h
src/class/qkeysequences.cpp
src/class/wingmessagebox.h
src/class/wingmessagebox.cpp
src/class/recentfilemanager.cpp
src/class/recentfilemanager.h
src/class/winginputdialog.h
src/class/winginputdialog.cpp
src/class/wingfiledialog.h
src/class/wingfiledialog.cpp
src/class/scriptmachine.h
src/class/scriptmachine.cpp
src/class/scriptmanager.h
src/class/scriptmanager.cpp
src/class/languagemanager.h
src/class/languagemanager.cpp
src/class/settingmanager.h
src/class/settingmanager.cpp
src/class/asdebugger.h
src/class/asdebugger.cpp
src/class/angelobjstring.h
src/class/angelobjstring.cpp
src/class/scripteditortheme.h
src/class/scripteditortheme.cpp
src/class/appmanager.h
src/class/appmanager.cpp
src/class/angelscripthelper.h
src/class/asdatabase.cpp
src/class/asdatabase.h
src/class/qascodeparser.h
src/class/qascodeparser.cpp
src/class/ascompletion.cpp
src/class/ascompletion.h
src/class/asbuilder.h
src/class/asbuilder.cpp
src/class/clangformatmanager.h
src/class/clangformatmanager.cpp
src/class/aspreprocesser.h
src/class/aspreprocesser.cpp
src/class/layoutmanager.h
src/class/layoutmanager.cpp
src/class/wingupdater.h
src/class/wingupdater.cpp
src/class/richtextitemdelegate.h
src/class/richtextitemdelegate.cpp
src/class/showinshell.h
src/class/showinshell.cpp
src/class/dockcomponentsfactory.h
src/class/dockcomponentsfactory.cpp
src/class/diffutil.h
src/class/diffutil.cpp
src/class/crashhandler.h
src/class/crashhandler.cpp
src/class/pluginsystem.h
src/class/pluginsystem.cpp
src/class/inspectqtloghelper.h
src/class/inspectqtloghelper.cpp
src/class/codeinfotip.h
src/class/codeinfotip.cpp
src/class/wingconsolehighligher.h
src/class/wingconsolehighligher.cpp
src/class/asconsolecompletion.h
src/class/asconsolecompletion.cpp
src/class/scriptsettings.h
src/class/scriptsettings.cpp)
set(INTERNAL_PLG_SRC
src/class/wingangelapi.h src/class/wingangelapi.cpp
src/class/ctypeparser.cpp src/class/ctypeparser.h src/class/wingcstruct.h
src/class/wingcstruct.cpp)
if(WINGHEX_USE_FRAMELESS)
set(WIDGET_FRAME_SRC
src/widgetframe/windowbar.cpp src/widgetframe/windowbar.h
src/widgetframe/windowbar_p.h src/widgetframe/windowbutton.cpp
src/widgetframe/windowbutton.h src/widgetframe/windowbutton_p.h)
list(APPEND CLASS_SRC src/class/framelesshelper.h
src/class/framelesshelper.cpp)
else()
set(WIDGET_FRAME_SRC)
endif()
set(MODEL_SRC
src/model/findresultmodel.h
src/model/findresultmodel.cpp
src/model/numshowmodel.h
src/model/numshowmodel.cpp
src/model/bookmarksmodel.h
src/model/bookmarksmodel.cpp
src/model/metadatamodel.h
src/model/metadatamodel.cpp
src/model/checksummodel.h
src/model/checksummodel.cpp
src/model/dbgcallstackmodel.h
src/model/dbgcallstackmodel.cpp
src/model/dbgvarshowmodel.h
src/model/dbgvarshowmodel.cpp
src/model/codecompletionmodel.h
src/model/codecompletionmodel.cpp)
set(SETTING_SRC
src/settings/settings.h
src/settings/generalsettingdialog.h
src/settings/generalsettingdialog.cpp
src/settings/generalsettingdialog.ui
src/settings/pluginsettingdialog.h
src/settings/pluginsettingdialog.cpp
src/settings/pluginsettingdialog.ui
src/settings/editorsettingdialog.h
src/settings/editorsettingdialog.cpp
src/settings/editorsettingdialog.ui
src/settings/scriptsettingdialog.h
src/settings/scriptsettingdialog.cpp
src/settings/scriptsettingdialog.ui
src/settings/othersettingsdialog.h
src/settings/othersettingsdialog.cpp
src/settings/othersettingsdialog.ui
src/settings/clangformatsetdialog.h
src/settings/clangformatsetdialog.cpp
src/settings/clangformatsetdialog.ui
src/settings/qeditconfig.h
src/settings/qeditconfig.cpp
src/settings/qeditconfig.ui)
set(SCRIPT_ADDON_SRC
src/scriptaddon/scriptqstring.h
src/scriptaddon/scriptqstring.cpp
src/scriptaddon/scriptqdictionary.h
src/scriptaddon/scriptqdictionary.cpp
src/scriptaddon/scriptregex.h
src/scriptaddon/scriptregex.cpp
src/scriptaddon/scriptcolor.h
src/scriptaddon/scriptcolor.cpp
src/scriptaddon/scriptjson.h
src/scriptaddon/scriptjson.cpp
src/scriptaddon/scriptfile.cpp
src/scriptaddon/scriptfile.h
src/scriptaddon/aspromise.hpp)
# localization support
file(
GLOB_RECURSE TS_FILES
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
"${CMAKE_CURRENT_SOURCE_DIR}/lang/*/winghex_*.ts")
foreach(TS_FILE IN LISTS TS_FILES)
get_filename_component(TS_DIR ${TS_FILE} DIRECTORY)
set(QM_DIR "${CMAKE_CURRENT_BINARY_DIR}/.tmp/${TS_DIR}")
set(QM_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${TS_DIR}")
file(MAKE_DIRECTORY "${QM_DIR}")
file(MAKE_DIRECTORY "${QM_OUT_DIR}")
set_source_files_properties(${TS_FILE} PROPERTIES OUTPUT_LOCATION ${QM_DIR})
endforeach()
set(TRANSLATION_PATH
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/QConsoleWidget
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/QHexView
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/Qt-Advanced-Docking-System/src
${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/QWingRibbon
${CMAKE_CURRENT_SOURCE_DIR}/src)
if(${QT_VERSION_MAJOR} EQUAL 5)
qt5_create_translation(QM_FILES ${TRANSLATION_PATH} ${TS_FILES} OPTIONS
-no-obsolete)
elseif(${QT_VERSION_MAJOR} EQUAL 6)
qt6_create_translation(QM_FILES ${TRANSLATION_PATH} ${TS_FILES} OPTIONS
-no-obsolete)
else()
message(FATAL_ERROR "Unsupported QT version")
endif()
set(LANG_SRC "${CMAKE_CURRENT_SOURCE_DIR}/lang")
set(LANG_DEST "${CMAKE_CURRENT_BINARY_DIR}/.tmp/lang")
set(LANG_TARGETS "")
set(LANG_PAK_NAME "winghex_tr.pak")
add_definitions(-DLANG_PAK_NAME="${LANG_PAK_NAME}")
foreach(TS_FILE IN LISTS TS_FILES)
get_filename_component(TS_DIR ${TS_FILE} DIRECTORY)
get_filename_component(LANG_NAME "${TS_DIR}" NAME)
set(QM_DIR "${CMAKE_CURRENT_BINARY_DIR}/.tmp/${TS_DIR}")
set(QM_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${TS_DIR}")
set(LANG_NEED_COPY_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/${TS_DIR}")
set(LANG_NEED_COPY "${LANG_NEED_COPY_PREFIX}/about.md"
"${LANG_NEED_COPY_PREFIX}/devs.md")
add_custom_target(
copy_lang_files_${LANG_NAME}
COMMAND ${CMAKE_COMMAND} -E copy ${LANG_NEED_COPY} ${QM_DIR}
COMMENT "Copying files to ${LANG_DEST}")
set(LANG_PAK "${QM_DIR}/${LANG_PAK_NAME}")
set(LANG_COMPRESS_CONTENT "winghex_${LANG_NAME}.qm" "about.md" "devs.md")
add_custom_target(
pak_lang_files_${LANG_NAME}
COMMAND ${CMAKE_COMMAND} -E tar cf ${LANG_PAK_NAME} --format=zip
${LANG_COMPRESS_CONTENT}
WORKING_DIRECTORY "${QM_DIR}"
COMMENT "Compressing ${TS_FILE} into ${LANG_PAK_NAME}"
DEPENDS ${QM_FILES} copy_lang_files_${LANG_NAME})
set(TARGET_NAME "langgen_${LANG_NAME}")
add_custom_target(
${TARGET_NAME}
COMMAND ${CMAKE_COMMAND} -E copy ${LANG_PAK_NAME} ${QM_OUT_DIR}
WORKING_DIRECTORY "${QM_DIR}"
COMMENT "Copy ${TS_FILE} into ${LANG_PAK_NAME}"
DEPENDS pak_lang_files_${LANG_NAME})
list(APPEND LANG_TARGETS ${TARGET_NAME})
endforeach()
add_custom_target(post_build_tasks ALL DEPENDS ${LANG_TARGETS})
set(PROJECT_SOURCES
main.cpp
src/utilities.h
src/dbghelper.h
src/define.h
${QCONSOLEWIDGET_SRC}
${WIDGET_FRAME_SRC}
${RIBBON_SRC}
${CLASS_SRC}
${INTERNAL_PLG_SRC}
${MODEL_SRC}
${DIALOG_SRC}
${CONTROL_SRC}
${SETTING_SRC}
${SCRIPT_ADDON_SRC}
${ANGEL_SCRIPT_ADDON}
${QM_FILES}
theme/breeze.qrc
resources.qrc)
add_custom_target(
build-time-make-directory ALL
COMMAND
${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/lang"
"${CMAKE_CURRENT_BINARY_DIR}/scripts"
"${CMAKE_CURRENT_BINARY_DIR}/.tmp")
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
if(WIN32)
set(app_icon_resource_windows "${CMAKE_CURRENT_SOURCE_DIR}/favicon.rc")
qt_add_executable(WingHexExplorer2 MANUAL_FINALIZATION
${PROJECT_SOURCES} ${app_icon_resource_windows})
else()
qt_add_executable(WingHexExplorer2 MANUAL_FINALIZATION
${PROJECT_SOURCES})
endif()
else()
if(ANDROID)
message(FATAL_ERROR "Android is not supported!")
else()
if(WIN32)
set(app_icon_resource_windows
"${CMAKE_CURRENT_SOURCE_DIR}/favicon.rc")
add_executable(${CMAKE_PROJECT_NAME} ${PROJECT_SOURCES}
${app_icon_resource_windows})
else()
add_executable(${CMAKE_PROJECT_NAME} ${PROJECT_SOURCES})
endif()
endif()
endif()
target_compile_options(
WingHexExplorer2
PRIVATE $<$<AND:$<NOT:$<CXX_COMPILER_ID:MSVC>>,$<CONFIG:Release>>:-g>
$<$<CXX_COMPILER_ID:MSVC>:$<$<CONFIG:Release>:/Zi>>)
target_link_options(WingHexExplorer2 PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:$<$<CONFIG:Release>:/DEBUG>>)
target_link_libraries(
${CMAKE_PROJECT_NAME}
PRIVATE Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::Network
Qt${QT_VERSION_MAJOR}::Concurrent
Qt${QT_VERSION_MAJOR}::PrintSupport
Qt${QT_VERSION_MAJOR}::GuiPrivate
Qt${QT_VERSION_MAJOR}::CorePrivate
Qt${QT_VERSION_MAJOR}::Xml
cpptrace::cpptrace
QtSingleApplication::QtSingleApplication
WingPlugin
QHexView
WingCodeEdit
angelscript
qtadvanceddocking-qt${QT_VERSION_MAJOR})
if(WINGHEX_USE_FRAMELESS)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE QWKCore QWKWidgets)
endif()
if(WIN32)
target_link_libraries(${CMAKE_PROJECT_NAME}
PRIVATE Qt${QT_VERSION_MAJOR}::AxContainer)
endif()
target_include_directories(
${CMAKE_PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty"
"${CMAKE_CURRENT_SOURCE_DIR}/src")
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. If
# you are developing for iOS or macOS you should consider setting an explicit,
# fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)
set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER
com.wingsummer.WingHexExplorer2)
endif()
set_target_properties(
WingHexExplorer2
PROPERTIES ${BUNDLE_ID_OPTION} MACOSX_BUNDLE_BUNDLE_VERSION
${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING
${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE
TRUE WIN32_EXECUTABLE
TRUE)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(WingHexExplorer2)
endif()
if(${QT_VERSION_MAJOR} EQUAL 6)
if(Qt6Widgets_VERSION VERSION_GREATER_EQUAL 6.5.0)
install(
TARGETS WingHexExplorer2
BUNDLE DESTINATION .
RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
# Generate the deployment script.
qt6_generate_deploy_app_script(
TARGET WingHexExplorer2 OUTPUT_SCRIPT deploy_script
NO_UNSUPPORTED_PLATFORM_ERROR)
# Call the deployment script on "cmake --install".
install(SCRIPT ${deploy_script})
endif()
endif()
add_subdirectory(WingPlugin)