FreeCAD
107 строк · 4.0 Кб
1# -------------------------------- Qt --------------------------------
2
3set(FREECAD_QT_COMPONENTS Core Concurrent Network Xml)
4if (FREECAD_QT_MAJOR_VERSION EQUAL 6)
5set (Qt6Core_MOC_EXECUTABLE Qt6::moc)
6endif()
7
8if(BUILD_GUI)
9if (FREECAD_QT_MAJOR_VERSION EQUAL 5)
10if (WIN32)
11list (APPEND FREECAD_QT_COMPONENTS WinExtras)
12endif()
13elseif (FREECAD_QT_MAJOR_VERSION EQUAL 6)
14list (APPEND FREECAD_QT_COMPONENTS GuiTools)
15list (APPEND FREECAD_QT_COMPONENTS SvgWidgets)
16endif()
17
18list (APPEND FREECAD_QT_COMPONENTS OpenGL PrintSupport Svg UiTools Widgets LinguistTools)
19
20if(BUILD_DESIGNER_PLUGIN)
21list (APPEND FREECAD_QT_COMPONENTS Designer)
22endif()
23endif()
24
25if (ENABLE_DEVELOPER_TESTS)
26list (APPEND FREECAD_QT_COMPONENTS Test)
27endif ()
28
29foreach(COMPONENT IN LISTS FREECAD_QT_COMPONENTS)
30find_package(Qt${FREECAD_QT_MAJOR_VERSION} REQUIRED COMPONENTS ${COMPONENT})
31set(Qt${COMPONENT}_LIBRARIES ${Qt${FREECAD_QT_MAJOR_VERSION}${COMPONENT}_LIBRARIES})
32set(Qt${COMPONENT}_INCLUDE_DIRS ${Qt${FREECAD_QT_MAJOR_VERSION}${COMPONENT}_INCLUDE_DIRS})
33set(Qt${COMPONENT}_FOUND ${Qt${FREECAD_QT_MAJOR_VERSION}${COMPONENT}_FOUND})
34set(Qt${COMPONENT}_VERSION ${Qt${FREECAD_QT_MAJOR_VERSION}${COMPONENT}_VERSION})
35endforeach()
36
37set(CMAKE_AUTOMOC TRUE)
38set(CMAKE_AUTOUIC TRUE)
39set(QtCore_MOC_EXECUTABLE ${Qt${FREECAD_QT_MAJOR_VERSION}Core_MOC_EXECUTABLE})
40
41add_definitions(-DQT_NO_KEYWORDS)
42
43message(STATUS "Set up to compile with Qt ${Qt${FREECAD_QT_MAJOR_VERSION}Core_VERSION}")
44
45# In Qt 5.15 they added more generic names for these functions: "backport" those new names
46# so we can migrate to using the non-version-named functions in all instances.
47if (Qt${FREECAD_QT_MAJOR_VERSION}Core_VERSION VERSION_LESS 5.15.0)
48message(STATUS "Manually creating qt_wrap_cpp() and qt_add_resources() to support Qt ${Qt${FREECAD_QT_MAJOR_VERSION}Core_VERSION}")
49
50# Wrapper code adapted from Qt 6's Qt6CoreMacros.cmake file:
51function(qt_add_resources outfiles)
52qt5_add_resources("${outfiles}" ${ARGN})
53if(TARGET ${outfiles})
54cmake_parse_arguments(PARSE_ARGV 1 arg "" "OUTPUT_TARGETS" "")
55if (arg_OUTPUT_TARGETS)
56set(${arg_OUTPUT_TARGETS} ${${arg_OUTPUT_TARGETS}} PARENT_SCOPE)
57endif()
58else()
59set("${outfiles}" "${${outfiles}}" PARENT_SCOPE)
60endif()
61endfunction()
62
63function(qt_wrap_cpp outfiles)
64qt5_wrap_cpp("${outfiles}" ${ARGN})
65set("${outfiles}" "${${outfiles}}" PARENT_SCOPE)
66endfunction()
67
68function(qt_add_translation _qm_files)
69qt5_add_translation("${_qm_files}" ${ARGN})
70set("${_qm_files}" "${${_qm_files}}" PARENT_SCOPE)
71endfunction()
72
73# Since Qt 5.15 Q_DISABLE_COPY_MOVE is defined
74set (HAVE_Q_DISABLE_COPY_MOVE 0)
75else()
76# Since Qt 5.15 Q_DISABLE_COPY_MOVE is defined
77set (HAVE_Q_DISABLE_COPY_MOVE 1)
78endif()
79
80configure_file(${CMAKE_SOURCE_DIR}/src/QtCore.h.cmake ${CMAKE_BINARY_DIR}/src/QtCore.h)
81
82function(qt_find_and_add_translation _qm_files _tr_dir _qm_dir)
83file(GLOB _ts_files ${_tr_dir})
84set_source_files_properties(${_ts_files} PROPERTIES OUTPUT_LOCATION ${_qm_dir})
85qt_add_translation("${_qm_files}" ${_ts_files})
86set("${_qm_files}" "${${_qm_files}}" PARENT_SCOPE)
87endfunction()
88
89function(qt_create_resource_file outfile)
90set(QRC "<RCC>\n <qresource>\n")
91foreach (it ${ARGN})
92get_filename_component(qmfile "${it}" NAME)
93string(APPEND QRC " <file>translations/${qmfile}</file>")
94endforeach()
95string(APPEND QRC " </qresource>\n</RCC>\n")
96file(WRITE ${outfile} ${QRC})
97endfunction()
98
99function(qt_create_resource_file_prefix outfile)
100set(QRC "<RCC>\n <qresource prefix=\"/translations\">\n")
101foreach (it ${ARGN})
102get_filename_component(qmfile "${it}" NAME)
103string(APPEND QRC " <file>${qmfile}</file>")
104endforeach()
105string(APPEND QRC " </qresource>\n</RCC>\n")
106file(WRITE ${outfile} ${QRC})
107endfunction()
108