167 lines
4.7 KiB
CMake
167 lines
4.7 KiB
CMake
#[[
|
|
|
|
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()
|