0033661: Data Exchange, Step Import - Tessellated GDTs are not imported
[occt.git] / adm / cmake / qt_macro.cmake
1 #qt
2
3 macro (FIND_QT_PACKAGE PROJECT_LIBRARIES_DEBUG PROJECT_LIBRARIES_RELEASE PROJECT_INCLUDES)
4
5   if ("${3RDPARTY_QT_DIR}" STREQUAL "")
6     message (FATAL_ERROR "Empty Qt dir")
7   endif()
8
9   if (${Qt5_FOUND})
10     #message (STATUS "Qt5 cmake configuration")
11
12     set(PROJECT_INCLUDES "${Qt5Widgets_INCLUDE_DIRS}" "${Qt5Quick_INCLUDE_DIRS}" "${Qt5Xml_INCLUDE_DIRS}")
13     set(PROJECT_LIBRARIES_DEBUG "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}")
14     set(PROJECT_LIBRARIES_RELEASE "${Qt5Widgets_LIBRARIES}" "${Qt5Quick_LIBRARIES}" "${Qt5Xml_LIBRARIES}")
15
16     # processing *.ts files to generate *.qm
17     find_package(Qt5LinguistTools)
18     get_target_property(QT_LRELEASE_EXECUTABLE Qt5::lrelease LOCATION)
19     mark_as_advanced(QT_LRELEASE_EXECUTABLE)
20
21     GET_FILENAME_COMPONENT(QT_BINARY_DIR ${QT_LRELEASE_EXECUTABLE} DIRECTORY)
22     MARK_AS_ADVANCED(QT_BINARY_DIR)
23   else()
24     #message (STATUS "Qt4 cmake configuration")
25     set(PROJECT_INCLUDES ${QT_INCLUDES})
26     if (WIN32)
27       set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/QtCored4.lib;${3RDPARTY_QT_DIR}/lib/QtGuid4.lib;${3RDPARTY_QT_DIR}/lib/QtXmld4.lib")
28       set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/QtCore4.lib;${3RDPARTY_QT_DIR}/lib/QtGui4.lib;${3RDPARTY_QT_DIR}/lib/QtXml4.lib")
29     else()
30       set(PROJECT_LIBRARIES_DEBUG "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so")
31       set(PROJECT_LIBRARIES_RELEASE "${3RDPARTY_QT_DIR}/lib/libQtCore.so;${3RDPARTY_QT_DIR}/lib/libQtGui.so;${3RDPARTY_QT_DIR}/lib/libQtXml.so")
32     endif(WIN32)
33     find_program(QT_LRELEASE_EXECUTABLE lrelease)
34   endif()
35 endmacro()
36
37
38 macro (FIND_AND_WRAP_MOC_FILES HEADER_FILES GENERATED_MOC_FILES)
39   set (GENERATED_MOC_FILES "")
40   foreach (FILE ${HEADER_FILES})
41     # processing only files where Q_OBJECT exists
42     file(STRINGS "${FILE}" LINES REGEX "Q_OBJECT")
43     if(LINES)
44       unset (MOC_FILE)
45       if (${Qt5_FOUND})
46         qt5_wrap_cpp(MOC_FILE ${FILE})
47       else()
48         qt4_wrap_cpp(MOC_FILE ${FILE})
49       endif()
50       #message (STATUS "... Info: next MOC file ${MOC_FILE}")
51       list(APPEND ${GENERATED_MOC_FILES} ${MOC_FILE})
52      endif(LINES)
53   endforeach (FILE)
54
55 endmacro()
56
57 macro (FIND_AND_WRAP_RESOURCE_FILE RESOURCE_FILE_NAME RCC_FILES)
58   if(EXISTS "${RESOURCE_FILE_NAME}")
59     if (${Qt5_FOUND})
60       qt5_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
61     else()
62       qt4_add_resources(RCC_FILES "${RESOURCE_FILE_NAME}")
63       # suppress some GCC warnings coming from source files generated from .qrc resources
64       if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
65         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
66       endif()
67     endif()
68   endif()
69 endmacro()
70
71 macro (FIND_AND_WRAP_TS_FILE RESOURCE_FILE_NAME TARGET_FOLDER QM_FILES)
72   if(EXISTS "${RESOURCE_FILE_NAME}")
73     if (${Qt5_FOUND})
74       qt5_add_translation(QM_FILES "${RESOURCE_FILE_NAME}")
75     else()
76       qt4_add_translation(QM_FILES "${RESOURCE_FILE_NAME}")
77     endif()
78   endif()
79 endmacro()
80
81 macro (FIND_AND_INSTALL_QT_RESOURCES OCCT_PACKAGE RESOURCE_FILES)
82   file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES"   TS_FILES   REGEX ".+[.]ts")
83   file (STRINGS "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/FILES"   QRC_FILES  REGEX ".+[.]qrc")
84
85   string (FIND "${OCCT_PACKAGE}" "/" _index)
86   if (_index GREATER -1)
87     math (EXPR _index "${_index}")
88     string (SUBSTRING "${OCCT_PACKAGE}" 0 ${_index} OCCT_PACKAGE_NAME)
89   else()
90     set (OCCT_PACKAGE_NAME "${OCCT_PACKAGE}")
91   endif(_index GREATER -1)
92
93   #message("QRC files are: ${QRC_FILES} in ${OCCT_PACKAGE}")
94   foreach (QRC_FILE ${QRC_FILES})
95     set (QRC_FILE_RELATIVE "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${QRC_FILE}")
96     if (EXISTS ${QRC_FILE_RELATIVE})
97       FIND_AND_WRAP_RESOURCE_FILE(${QRC_FILE_RELATIVE} RCC_FILES)
98       list (APPEND ${RESOURCE_FILES} "${RCC_FILES}")
99     endif()
100   endforeach()
101
102   #message("TS files are: ${TS_FILES} in ${OCCT_PACKAGE}")
103   foreach (TS_FILE ${TS_FILES})
104     set (TS_FILE_RELATIVE "${CMAKE_SOURCE_DIR}/${RELATIVE_SOURCES_DIR}/${OCCT_PACKAGE}/${TS_FILE}")
105     FIND_AND_WRAP_TS_FILE(${TS_FILE_RELATIVE} "${TARGET_FOLDER}/${CURRENT_MODULE}" QM_FILES)
106     if (EXISTS ${TS_FILE_RELATIVE})
107       list (APPEND ${RESOURCE_FILES} "${TS_FILE_RELATIVE}")
108       list (APPEND ${RESOURCE_FILES} "${QM_FILES}")
109     endif()
110   endforeach()
111
112   foreach (QM_FILE ${QM_FILES})
113     INSTALL(FILES ${QM_FILE} DESTINATION "${INSTALL_DIR_RESOURCE}/samples")
114     #message("install *.qm files (${QM_FILE}) to: ${INSTALL_DIR_RESOURCE}/samples")
115   endforeach (QM_FILE ${QM_FILES})
116 endmacro()
117