version 2.0.0_alpha

Important! All QtWraps macros renamed!
Qt 6 support
Graphic export feature
qad_types cross-Qt small changes
This commit is contained in:
2021-03-05 13:05:23 +03:00
parent add26cf9ad
commit 7b011ed242
46 changed files with 815 additions and 219 deletions

View File

@@ -1,19 +1,19 @@
#[[
find_qt([<Module1> <Module2> ...] [Qt4] [Qt5])
qad_find_qt([<Module1> <Module2> ...] [Qt4] [Qt5] [Qt6])
Find Qt4 or/and Qt5 packages
If Qt4/5 found, set
* Qt<4/5>_ROOT var to Qt root dir
* Qt<4/5>_BIN var to Qt binary dir
* Qt<4/5>_PLUGINS_DIR var to Qt plugins dir
* Qt<4/5>_LANG_DIR var to Qt translations dir
Find Qt4 or/and Qt5, Qt6 packages
If Qt4/5/6 found, set
* Qt<4/5/6>_ROOT var to Qt root dir
* Qt<4/5/6>_BIN var to Qt binary dir
* Qt<4/5/6>_PLUGINS_DIR var to Qt plugins dir
* Qt<4/5/6>_LANG_DIR var to Qt translations dir
Also set variable SOME_QT_FOUND
qt_sources(<src_out_var> [NO_DEFAULT] [DIR <dir>] [<regexp> ...])
qad_sources(<src_out_var> [NO_DEFAULT] [DIR <dir>] [<regexp> ...])
Collect all sources, optionally in directory <dir> and
Additional filters <regexp>. By default filter files with regexps
@@ -23,34 +23,34 @@ Default filters disabled with option NO_DEFAULT
qt_wrap(<file0> <file1> ... [HDRS <hrd_var>] [CPPS <cpp_var>] [QMS <qm_var>])
qad_wrap(<file0> <file1> ... [HDRS <hrd_var>] [CPPS <cpp_var>] [QMS <qm_var>])
Prepare sources for compile
Store headers to <hrd_var>, all wrapped Qt4 files to <cpp_var>_Qt4 and Qt5 files to <cpp_var>_Qt5
version are automatic detected after find_qt() call
Store headers to <hrd_var>, all wrapped Qt4 files to <cpp_var>_Qt4, Qt5 files to <cpp_var>_Qt5 and Qt6 files to <cpp_var>_Qt6
version are automatic detected after qad_find_qt() call
qt_add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
qad_add_executable(<name> [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
Add executables for founded Qt versions, target names is <name><TARGET_SUFFIX_Qt?>
All needed Qt includes automatic added to corresponding targets
<source> cant be CPPS variable passed to qt_wrap() or some list or filename
<source> cant be CPPS variable passed to qad_wrap() or some list or filename
qt_add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
qad_add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
Add library for founded Qt versions, target names is <name><TARGET_SUFFIX_Qt?>
All needed Qt includes automatic added to corresponding targets
<source> cant be CPPS variable passed to qt_wrap() or some list or filename
<source> cant be CPPS variable passed to qad_wrap() or some list or filename
qt_target_link_libraries(<name> ... <item> ...)
qad_target_link_libraries(<name> ... <item> ...)
Link targets for founded Qt versions, target names is <name><TARGET_SUFFIX_Qt?>
All needed Qt libraries automatic added to corresponding targets
@@ -60,7 +60,7 @@ add <MULTILIB_SUFFIX_Qt?> or individual <MULTILIB_>libname<_SUFFIX_Qt?>
qt_target_compile_definitions(<name> ...)
qad_target_compile_definitions(<name> ...)
Syntax similar to original "target_compile_definitions()"
Specify compile definitions to use when compiling a given <name>
@@ -68,7 +68,7 @@ Specify compile definitions to use when compiling a given <name>
qt_target_include_directories(<name> ...)
qad_target_include_directories(<name> ...)
Syntax similar to original "target_include_directories()"
Add include directories to a target
@@ -76,7 +76,7 @@ Add include directories to a target
qt_install(...)
qad_install(...)
Syntax similar to original "install()"
Install targets for founded Qt versions
@@ -90,12 +90,12 @@ to corresponding Qt plugins directory
Add LANG type for first argument - in this case you should
specify variable name, not variable value!
e.g. "qt_install(LANG my_QM DESTINATION QtLang)"
e.g. "qad_install(LANG my_QM DESTINATION QtLang)"
qt_install_lang(<name> DESTINATION <dir> [PATHS <path0> [<path1>] [...] ])
qad_install_lang(<name> DESTINATION <dir> [PATHS <path0> [<path1>] [...] ])
Search Qt translations for all <name> dependencies
in Qt<?>_LANG_DIR for <name>_LANG languages
@@ -105,23 +105,23 @@ You should use "set_lang()" macro before this action
qt_get_target(<name> <var> [Qt4 | Qt5])
qad_get_target(<name> <var> [Qt4 | Qt5 | Qt6])
Write real <name> Qt target name to <var>
If Qt4 or Qt5 specified, search for this version,
If Qt4 or Qt5, Qt6 specified, search for this version,
otherwise returns greatest version
qt_get_targets(<name> <var>)
qad_get_targets(<name> <var>)
Write all real <name> Qt target names to <var>
qt_generate_export_header(<name> ...)
qad_generate_export_header(<name> ...)
Call generate_export_header on Qt multitarget
@@ -162,7 +162,7 @@ QuickControls2;QuickParticles;QuickShapes;QuickTemplates2;QuickTest;QuickWidgets
ShaderTools;Sql;Svg;SvgWidgets;Test;Tools;UiPlugin;UiTools;Widgets;Xml")
set(_QT_VERSIONS_ 4 5)
set(_QT_VERSIONS_ 4 5 6)
foreach(_v ${_QT_VERSIONS_})
if (NOT DEFINED TARGET_SUFFIX_Qt${_v})
set(TARGET_SUFFIX_Qt${_v} "${_v}")
@@ -176,7 +176,7 @@ endif()
#set(TARGET_SUFFIX_Qt4 "")
macro(find_qt)
macro(qad_find_qt)
set(_QCOMP)
foreach(_v ${_QT_VERSIONS_})
set(_NEED${_v} 0)
@@ -307,6 +307,75 @@ macro(find_qt)
endif()
endif()
endif()
if (_NEED6)
#set(_MSG 1)
#if (Qt6_FOUND)
# set(_MSG 0)
#endif()
set(_QCOMP6 Core LinguistTools UiPlugin Widgets ${_QCOMP})
list(REMOVE_DUPLICATES _QCOMP6)
find_package(Qt6 COMPONENTS ${_QCOMP6} QUIET)
if (DEFINED ANDROID_PLATFORM)
set(CMAKE_SHARED_MODULE_SUFFIX_CXX ".so")
set(CMAKE_SHARED_LIBRARY_SUFFIX_CXX ".so")
set(CMAKE_SHARED_MODULE_SUFFIX_C ".so")
set(CMAKE_SHARED_LIBRARY_SUFFIX_C ".so")
endif()
if (Qt6Core_FOUND)
set(LOCAL_FOUND6 1)
set(_Qt6Modules)
foreach(m ${_QCOMP6})
if (m IN_LIST __qt_modules_6)
if (${Qt6${m}_FOUND})
set(__lib ${Qt6${m}_LIBRARIES})
if (DEFINED ANDROID_PLATFORM)
if (m IN_LIST __qt_bug_modules)
get_target_property(__lib Qt6::${m} LOCATION)
endif()
endif()
list(APPEND _Qt6Modules ${m})
list(APPEND Qt6_INCLUDES ${Qt6${m}_INCLUDE_DIRS})
list(APPEND Qt6_LIBRARIES ${__lib})
else()
if (NOT "x${_QUIET}" STREQUAL "xQUIET")
message(FATAL_ERROR "Qt6${m} NOT FOUND")
endif()
endif()
endif()
endforeach()
#get_property(_up_dir TARGET Qt6::UiPlugin PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
#message("${_up_dir}")
#if (NOT "x${_up_dir}" STREQUAL "x")
# list(APPEND Qt6_INCLUDES ${_up_dir})
#endif()
get_target_property(_Qt6_qmake Qt6::qmake LOCATION)
get_filename_component(_Qt6_BIN ${_Qt6_qmake} PATH)
foreach(_p ${Qt6Gui_PLUGINS})
get_target_property(_l ${_p} LOCATION)
get_filename_component(_l ${_l} DIRECTORY)
string(FIND "${_l}" "/" _ind REVERSE)
string(SUBSTRING "${_l}" 0 ${_ind} _l)
#message("Qt6: plugins dir: ${Qt6_PLUGINS_DIR}")
break()
endforeach()
string(FIND "${_Qt6_BIN}" "/" _ind REVERSE)
string(SUBSTRING "${_Qt6_BIN}" 0 ${_ind} _Qt6_ROOT)
set(Qt6_ROOT "${_Qt6_ROOT}" CACHE STRING "")
set(Qt6_BIN "${_Qt6_BIN}" CACHE STRING "")
set(Qt6_LANG_DIR ${Qt6_BIN}/../translations CACHE STRING "")
if ("x${Qt6_PLUGINS_DIR}" STREQUAL "x")
set(Qt6_PLUGINS_DIR "${Qt6_ROOT}/plugins" CACHE STRING "")
endif()
if (APPLE)
list(APPEND MOC_INC_Qt6 "-F${Qt6_ROOT}/lib")
endif()
if (NOT _QT6_MSG)
message(STATUS "Found Qt6: ${_Qt6_qmake} (version \"${Qt6_VERSION}\")")
set(_QT6_MSG 1 CACHE BOOL "msg_qt6" FORCE)
message(STATUS "Found Qt6 modules: ${_Qt6Modules}")
endif()
endif()
endif()
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
set(SOME_QT_FOUND 1 CACHE BOOL "" FORCE)
@@ -321,7 +390,7 @@ macro(find_qt)
endmacro()
macro(qt_sources OUT)
macro(qad_sources OUT)
set(${OUT})
set(_DIR "")
set(_IS_DIR 0)
@@ -357,7 +426,7 @@ macro(qt_sources OUT)
endmacro()
macro(qt_wrap)
macro(qad_wrap)
set(HDR_VAR)
set(CPP_VAR)
set(QM_VAR)
@@ -471,8 +540,16 @@ macro(qt_wrap)
set(${QM${_v}_VAR} "")
qt5_add_translation(${QM${_v}_VAR} ${TS_LIST})
endif()
elseif (${_v} EQUAL 6)
qt6_wrap_cpp(MOCS${_v} ${H_LIST} OPTIONS -nw ${MOC_INC_Qt6})
qt6_wrap_ui(CUIS${_v} ${UI_LIST})
qt6_add_resources(CRES${_v} ${RES_LIST})
if (WAS_QM_ARG)
set(${QM${_v}_VAR} "")
qt6_add_translation(${QM${_v}_VAR} ${TS_LIST})
endif()
else()
# Qt6 ...
# Qt7 ...
endif()
#message("${${QM${_v}_VAR}}")
list(APPEND ${CPP${_v}_VAR} ${CPP_LIST})
@@ -520,7 +597,8 @@ macro(__qt_set_defines _NAME _T)
endmacro()
macro(qt_add_executable _NAME)
macro(qad_add_executable _NAME)
#message("*qad_add_executable: \"${_NAME}\"")
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
_qt_split_add_args(_PREF _ARGS ${ARGN})
@@ -537,6 +615,7 @@ macro(qt_add_executable _NAME)
set(_${_NAME}_is_qt 1)
target_include_directories(${_TARGET} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/qt${_v} ${Qt${_v}_INCLUDES})
__qt_set_defines(${_NAME} ${_TARGET})
#message("add exe: \"${_TARGET}\"")
if(APPLE)
set(CMAKE_INSTALL_NAME_DIR "${_PREV_CIND}")
@@ -559,7 +638,8 @@ macro(qt_add_executable _NAME)
endmacro()
macro(qt_add_library _NAME)
macro(qad_add_library _NAME)
#message("*qad_add_library: \"${_NAME}\"")
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
_qt_split_add_args(_PREF _ARGS ${ARGN})
@@ -573,6 +653,7 @@ macro(qt_add_library _NAME)
endif()
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
add_library(${_TARGET} ${_PREF} ${_ARGS})
#message("add lib: \"${_TARGET} ${_PREF}\"")
set(_${_NAME}_is_qt 1)
target_include_directories(${_TARGET} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/qt${_v})
target_include_directories(${_TARGET} PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${Qt${_v}_INCLUDES})
@@ -610,7 +691,7 @@ macro(_qt_multitarget_suffix_ _OUT _IN _v)
endmacro()
macro(qt_target_link_libraries _NAME)
macro(qad_target_link_libraries _NAME)
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
@@ -633,7 +714,7 @@ macro(qt_target_link_libraries _NAME)
endmacro()
macro(qt_target_compile_definitions _NAME)
macro(qad_target_compile_definitions _NAME)
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
@@ -643,7 +724,7 @@ macro(qt_target_compile_definitions _NAME)
endmacro()
macro(qt_target_include_directories _NAME)
macro(qad_target_include_directories _NAME)
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
set(_TARGET ${_NAME}${TARGET_SUFFIX_Qt${_v}})
@@ -653,7 +734,7 @@ macro(qt_target_include_directories _NAME)
endmacro()
macro(qt_install)
macro(qad_install)
set(_prev_inst)
set(__add_args)
#message("command: ${ARGN}")
@@ -771,7 +852,7 @@ macro(_qt_gather_deps _T _out __p)
endmacro()
macro(qt_install_lang _NAME)
macro(qad_install_lang _NAME)
set(_prev_inst)
#message("command: ${ARGN}")
set(_PATHS)
@@ -849,7 +930,7 @@ macro(qt_install_lang _NAME)
endmacro()
macro(qt_get_target _NAME _OUT)
macro(qad_get_target _NAME _OUT)
set(${_OUT})
set(_ver)
foreach(_i ${ARGN})
@@ -871,7 +952,7 @@ macro(qt_get_target _NAME _OUT)
endmacro()
macro(qt_get_targets _NAME _OUT)
macro(qad_get_targets _NAME _OUT)
set(${_OUT})
foreach(_v ${_QT_VERSIONS_})
if (LOCAL_FOUND${_v})
@@ -881,9 +962,9 @@ macro(qt_get_targets _NAME _OUT)
endmacro()
macro(qt_generate_export_header _NAME)
qt_get_target(${_NAME} _some_target)
qt_get_target(${_NAME} _targets)
macro(qad_generate_export_header _NAME)
qad_get_target(${_NAME} _some_target)
qad_get_target(${_NAME} _targets)
foreach(_t ${_targets})
set_target_properties(${_t} PROPERTIES DEFINE_SYMBOL ${_NAME}_EXPORTS)
endforeach()