mirror of
https://github.com/QuasarApp/CMake.git
synced 2025-04-26 01:44:30 +00:00
94 lines
3.3 KiB
CMake
Executable File
94 lines
3.3 KiB
CMake
Executable File
#
|
|
# Copyright (C) 2018-2025 QuasarApp.
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# Everyone is permitted to copy and distribute verbatim copies
|
|
# of this license document, but changing it is not allowed.
|
|
#
|
|
|
|
if(DEFINED CROSSPLATFORM_BUILD_TOOLCHAIN)
|
|
return()
|
|
else()
|
|
set(CROSSPLATFORM_BUILD_TOOLCHAIN 1)
|
|
endif()
|
|
|
|
# use TARGET_PLATFORM_TOOLCHAIN
|
|
|
|
# This module include crossplatform toolchains by target platform.
|
|
# To select target platform set the TARGET_PLATFORM_TOOLCHAIN define.
|
|
# Availabel platforms:
|
|
# * wasm32
|
|
# * win32-g++
|
|
# * win64-g++
|
|
#
|
|
# Note
|
|
# For add full support of the wasm32 build you shold use the initWasmSupport method. This method prepare static build for wasm executable and qt resources.
|
|
#
|
|
# initWasmSupport arguments:
|
|
# * name - This is name of your initialize targets. You can set it as a CMAKE_PROJECT
|
|
# * deployFile - This is path to the deploy file of the cqtdepoyer tool. Use it for deploy your site.
|
|
|
|
if (NOT DEFINED TARGET_PLATFORM_TOOLCHAIN)
|
|
message(STATUS "The crossplatform build is disabled")
|
|
return()
|
|
|
|
endif()
|
|
|
|
set(CROSSPLATFORM_BUILD_TOOLCHAIN_PATH ${CMAKE_CURRENT_LIST_DIR}/${CMAKE_HOST_SYSTEM_NAME}/${TARGET_PLATFORM_TOOLCHAIN}.cmake)
|
|
|
|
message("CROSSPLATFORM_BUILD_TOOLCHAIN_PATH = ${CROSSPLATFORM_BUILD_TOOLCHAIN_PATH}")
|
|
if(EXISTS ${CROSSPLATFORM_BUILD_TOOLCHAIN_PATH})
|
|
|
|
message(STATUS "${TARGET_PLATFORM_TOOLCHAIN} exits in ${CROSSPLATFORM_BUILD_TOOLCHAIN_PATH}")
|
|
|
|
include("${CROSSPLATFORM_BUILD_TOOLCHAIN_PATH}")
|
|
|
|
else(EXISTS ${CROSSPLATFORM_BUILD_TOOLCHAIN_PATH})
|
|
message(STATUS "${TARGET_PLATFORM_TOOLCHAIN} not exits in ${CROSSPLATFORM_BUILD_TOOLCHAIN_PATH}")
|
|
endif()
|
|
|
|
if (DEFINED TARGET_PLATFORM_TOOLCHAIN)
|
|
if (${TARGET_PLATFORM_TOOLCHAIN} STREQUAL "wasm32")
|
|
set(QA_WASM32 ON CACHE BOOL "Custom define that enabled only when wasm32 platform are used" FORCE)
|
|
endif(${TARGET_PLATFORM_TOOLCHAIN} STREQUAL "wasm32")
|
|
endif(DEFINED TARGET_PLATFORM_TOOLCHAIN)
|
|
|
|
|
|
function(initWasmSupport name deployFile)
|
|
if(NOT TARGET ${name})
|
|
message("the ${name} target is not created!")
|
|
return()
|
|
|
|
endif(NOT TARGET ${name})
|
|
|
|
message("init support wasm build for target ${name}")
|
|
|
|
if (DEFINED TARGET_PLATFORM_TOOLCHAIN)
|
|
if (${TARGET_PLATFORM_TOOLCHAIN} STREQUAL "wasm32")
|
|
message(added deploy step for site)
|
|
set_target_properties(${name} PROPERTIES OUTPUT_NAME "${name}.js")
|
|
|
|
addDeployFromFile(${deployFile})
|
|
|
|
include(${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../QtStaticCMake/QtStaticCMake.cmake)
|
|
|
|
qt_generate_plugin_import(${name} VERBOSE)
|
|
|
|
# EXTRA_PLUGIN are the one required by plugin loaded by qt_generate_plugin_import
|
|
# It's not automatic yet :( All this workflow might change in future version of qt
|
|
# with better and better cmake support
|
|
qt_generate_qml_plugin_import(${name}
|
|
QML_SRC ${CMAKE_CURRENT_SOURCE_DIR}
|
|
EXTRA_PLUGIN
|
|
QtQuickVirtualKeyboardPlugin
|
|
QtQuickVirtualKeyboardSettingsPlugin
|
|
QtQuickVirtualKeyboardStylesPlugin
|
|
QmlFolderListModelPlugin
|
|
QQuickLayoutsPlugin
|
|
VERBOSE
|
|
)
|
|
|
|
endif(${TARGET_PLATFORM_TOOLCHAIN} STREQUAL "wasm32")
|
|
endif(DEFINED TARGET_PLATFORM_TOOLCHAIN)
|
|
|
|
endfunction()
|