#[[ shstk_qt_install(dir is_app target h_files qm_files) shstk_qt_plugin(name modules libs) shstk_qt_project(name is_app domain modules libs) ]] set(_ok TRUE) if (NOT BUILDING_qad) include(SHSTKMacros) include(QtWraps) find_qt(Core QUIET) find_package(QAD REQUIRED) set(_ok ${QAD_FOUND}) endif() if (_ok) macro(shstk_qt_founded _out) find_qt(Core QUIET) set(${_out}) foreach(_v ${_QT_VERSIONS_}) #message("Qt${_v} -> ${LOCAL_FOUND${_v}}") if (LOCAL_FOUND${_v}) list(APPEND ${_out} Qt${_v}) endif() endforeach() endmacro() macro(shstk_qt_install _dir is_app _target _h_files _qm_files) #message("QM=${_qm_files}") if((NOT ${is_app}) AND (NOT "x${_h_files}" STREQUAL "x")) if(LOCAL) install(FILES ${_h_files} DESTINATION include/${_dir}) else() if(WIN32) install(FILES ${_h_files} DESTINATION ${MINGW_INCLUDE}/${_dir}) else() install(FILES ${_h_files} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${_dir}) endif() endif() endif() if (NOT "x${_target}" STREQUAL "x") if(LOCAL) if(${is_app}) qt_install(TARGETS ${_target} DESTINATION bin) else() if(WIN32) qt_install(TARGETS ${_target} RUNTIME DESTINATION bin) qt_install(TARGETS ${_target} ARCHIVE DESTINATION lib) else() qt_install(TARGETS ${_target} DESTINATION lib) endif() endif() if(NOT "x${_qm_files}" STREQUAL "x") qt_install(LANG ${_qm_files} DESTINATION lang) endif() else() if(WIN32) if (${is_app}) qt_install(TARGETS ${_target} DESTINATION ${MINGW_BIN}) qt_install(TARGETS ${_target} DESTINATION QtBin) else() qt_install(TARGETS ${_target} ARCHIVE DESTINATION ${MINGW_LIB}) qt_install(TARGETS ${_target} RUNTIME DESTINATION ${MINGW_BIN}) qt_install(TARGETS ${_target} RUNTIME DESTINATION QtBin) endif() else() if (${is_app}) qt_install(TARGETS ${_target} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) else() qt_install(TARGETS ${_target} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) endif() endif() if(NOT "x${_qm_files}" STREQUAL "x") qt_install(LANG ${_qm_files} DESTINATION QtLang) endif() endif() endif() endmacro() macro(shstk_qt_plugin NAME _MODULES _LIBS) if (NOT STATIC_LIB) if(DESIGNER_PLUGINS) set(PROJ_NAME ${NAME}_plugin) include_directories("..") add_definitions(-DQT_PLUGIN) add_definitions(-DQT_NO_DEBUG) add_definitions(-DQT_SHARED) add_definitions(-DQDESIGNER_EXPORT_WIDGETS) find_qt(${QtVersions} Core Designer ${_MODULES}) qt_sources(SRC) qt_wrap(${SRC} CPPS out_CPP QMS out_QM) qt_add_library(${PROJ_NAME} SHARED out_CPP) qt_target_link_libraries(${PROJ_NAME} ${_LIBS} ${_${NAME}_PLUGIN_LIBS}) if (WIN32) qt_install(TARGETS ${PROJ_NAME} RUNTIME DESTINATION QtPlugins/designer) else() qt_install(TARGETS ${PROJ_NAME} DESTINATION QtPlugins/designer) endif() list(APPEND _qt_plugs ${NAME}) shstk_copy_to_parent() endif() endif() endmacro() macro(shstk_qt_project NAME IS_APP DOMAIN _MODULES _LIBS) project(${NAME}) #message("find_qt ${NAME} \"${QtVersions}\" \"${_MODULES}\"") find_qt(${QtVersions} Core ${_MODULES}) qt_sources(SRC) import_version(${PROJECT_NAME} ${DOMAIN}) import_deploy_properties(${PROJECT_NAME} ${DOMAIN}) if (${IS_APP}) list(APPEND _qt_apps ${PROJECT_NAME}) set_deploy_property(${PROJECT_NAME} LABEL ${PROJECT_NAME} FULLNAME "${${DOMAIN}_DOMAIN}.${PROJECT_NAME}" INFO "${APP_INFO}" ICON "${APP_ICON}") else() list(APPEND _qt_libs ${PROJECT_NAME}) set_deploy_property(${PROJECT_NAME} SHARED LABEL ${PROJECT_NAME} FULLNAME "${${DOMAIN}_DOMAIN}.${PROJECT_NAME}" INFO "${DOMAIN} ${NAME} library") endif() make_rc(${PROJECT_NAME} out_RC) qt_wrap(${SRC} HDRS out_HDR CPPS out_CPP QMS out_QM ${out_RC}) if (${IS_APP}) qt_add_executable(${PROJECT_NAME} WIN32 out_CPP ${${DOMAIN}_EXPORT_HEADER} ${ARGN}) else() set(_libtype SHARED) if (NOT "x${${DOMAIN}_LIB_TYPE}" STREQUAL "x") set(_libtype ${${DOMAIN}_LIB_TYPE}) endif() qt_add_library(${PROJECT_NAME} ${_libtype} out_CPP ${${DOMAIN}_EXPORT_HEADER} ${ARGN}) #if(NOT ${DOMAIN}_STATIC_LIB) # qt_target_compile_definitions(${PROJECT_NAME} PRIVATE ${DOMAIN}_SHARED_DEFINE) #endif() qt_generate_export_header(${PROJECT_NAME}) list(APPEND out_HDR "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.h") list(APPEND QT_MULTILIB_LIST ${PROJECT_NAME}) #message("${QT_MULTILIB_LIST}") #set(QT_MULTILIB_LIST "${QT_MULTILIB_LIST}" CACHE STRING "") endif() qt_target_link_libraries(${PROJECT_NAME} ${_LIBS}) #message(STATUS "Building ${PROJECT_NAME}") if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/plugin") set(_${NAME}_PLUGIN_LIBS "${_LIBS}") add_subdirectory(plugin) endif() shstk_copy_to_parent() endmacro() endif()