Files
cmake/SHSTKQtMacros.cmake
2021-11-16 15:29:24 +03:00

177 lines
5.0 KiB
CMake

#[[
shstk_qad_install(dir is_app target h_files qm_files)
shstk_qad_plugin(name modules libs)
shstk_qad_project(name is_app domain modules libs)
]]
set(_ok TRUE)
if (NOT BUILDING_qad)
include(SHSTKMacros)
include(QtWraps)
qad_find_qt(Core QUIET)
find_package(QAD REQUIRED)
set(_ok ${QAD_FOUND})
endif()
if (_ok)
macro(shstk_qt_founded _out)
qad_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_qad_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${_qm_files}" STREQUAL "x")
if(LOCAL)
qad_install(LANG ${_qm_files} DESTINATION lang)
else()
qad_install(LANG ${_qm_files} DESTINATION QtLang)
endif()
endif()
if (NOT "x${_target}" STREQUAL "x")
if(LOCAL)
if(${is_app})
qad_install(TARGETS ${_target} DESTINATION bin)
else()
if(WIN32)
qad_install(TARGETS ${_target} RUNTIME DESTINATION bin)
qad_install(TARGETS ${_target} ARCHIVE DESTINATION lib)
else()
qad_install(TARGETS ${_target} DESTINATION lib)
endif()
endif()
else()
if(WIN32)
if (${is_app})
qad_install(TARGETS ${_target} DESTINATION ${MINGW_BIN})
qad_install(TARGETS ${_target} DESTINATION QtBin)
else()
qad_install(TARGETS ${_target} ARCHIVE DESTINATION ${MINGW_LIB})
qad_install(TARGETS ${_target} RUNTIME DESTINATION ${MINGW_BIN})
qad_install(TARGETS ${_target} RUNTIME DESTINATION QtBin)
endif()
else()
if (${is_app})
qad_install(TARGETS ${_target} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
else()
qad_install(TARGETS ${_target} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
endif()
endif()
endif()
endif()
endmacro()
macro(shstk_qad_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)
qad_find_qt(${QtVersions} Core Designer ${_MODULES})
qad_sources(SRC)
qad_wrap(${SRC} CPPS out_CPP QMS out_QM)
qad_add_library(${PROJ_NAME} SHARED out_CPP)
qad_target_link_libraries(${PROJ_NAME} ${_LIBS} ${_${NAME}_PLUGIN_LIBS})
if (WIN32)
qad_install(TARGETS ${PROJ_NAME} RUNTIME DESTINATION QtPlugins/designer)
else()
qad_install(TARGETS ${PROJ_NAME} DESTINATION QtPlugins/designer)
endif()
list(APPEND _qt_plugs ${NAME})
shstk_copy_to_parent()
endif()
endif()
endmacro()
macro(shstk_qad_project NAME IS_APP DOMAIN _MODULES _LIBS)
project(${NAME})
#message("qad_find_qt ${NAME} ${IS_APP} \"${QtVersions}\" \"${_MODULES}\"")
qad_find_qt(${QtVersions} Core ${_MODULES})
qad_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)
qad_wrap(${SRC} HDRS out_HDR CPPS out_CPP QMS out_QM ${out_RC})
#message("add_exe proj ${NAME}, ${${DOMAIN}_DOMAIN}.${PROJECT_NAME}")
if (${IS_APP})
set(_DEBUG_FLAG_)
if (CMAKE_BUILD_TYPE MATCHES Debug)
set(_DEBUG_FLAG_ "WIN32")
endif()
qad_add_executable(${PROJECT_NAME} ${_DEBUG_FLAG_} out_CPP ${${DOMAIN}_EXPORT_HEADER} ${ARGN})
else()
set(_libtype SHARED)
if (NOT "x${${DOMAIN}_LIB_TYPE}" STREQUAL "x")
set(_libtype ${${DOMAIN}_LIB_TYPE})
endif()
qad_add_library(${PROJECT_NAME} ${_libtype} out_CPP ${${DOMAIN}_EXPORT_HEADER} ${ARGN})
#if(NOT ${DOMAIN}_STATIC_LIB)
# qad_target_compile_definitions(${PROJECT_NAME} PRIVATE ${DOMAIN}_SHARED_DEFINE)
#endif()
qad_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()
qad_target_link_libraries(${PROJECT_NAME} ${_LIBS})
file(GLOB_RECURSE PHS "*_p.h")
if ((NOT "x${out_HDR}" STREQUAL "x") AND (NOT "x${PHS}" STREQUAL "x"))
list(REMOVE_ITEM out_HDR ${PHS})
endif()
#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()