FreeCAD

Форк
0
/
SetupQt.cmake 
107 строк · 4.0 Кб
1
# -------------------------------- Qt --------------------------------
2

3
set(FREECAD_QT_COMPONENTS Core Concurrent Network Xml)
4
if (FREECAD_QT_MAJOR_VERSION EQUAL 6)
5
    set (Qt6Core_MOC_EXECUTABLE Qt6::moc)
6
endif()
7

8
if(BUILD_GUI)
9
    if (FREECAD_QT_MAJOR_VERSION EQUAL 5)
10
        if (WIN32)
11
            list (APPEND FREECAD_QT_COMPONENTS WinExtras)
12
        endif()
13
    elseif (FREECAD_QT_MAJOR_VERSION EQUAL 6)
14
        list (APPEND FREECAD_QT_COMPONENTS GuiTools)
15
        list (APPEND FREECAD_QT_COMPONENTS SvgWidgets)
16
    endif()
17

18
    list (APPEND FREECAD_QT_COMPONENTS OpenGL PrintSupport Svg UiTools Widgets LinguistTools)
19

20
    if(BUILD_DESIGNER_PLUGIN)
21
        list (APPEND FREECAD_QT_COMPONENTS Designer)
22
    endif()
23
endif()
24

25
if (ENABLE_DEVELOPER_TESTS)
26
    list (APPEND FREECAD_QT_COMPONENTS Test)
27
endif ()
28

29
foreach(COMPONENT IN LISTS FREECAD_QT_COMPONENTS)
30
    find_package(Qt${FREECAD_QT_MAJOR_VERSION} REQUIRED COMPONENTS ${COMPONENT})
31
    set(Qt${COMPONENT}_LIBRARIES ${Qt${FREECAD_QT_MAJOR_VERSION}${COMPONENT}_LIBRARIES})
32
    set(Qt${COMPONENT}_INCLUDE_DIRS ${Qt${FREECAD_QT_MAJOR_VERSION}${COMPONENT}_INCLUDE_DIRS})
33
    set(Qt${COMPONENT}_FOUND ${Qt${FREECAD_QT_MAJOR_VERSION}${COMPONENT}_FOUND})
34
    set(Qt${COMPONENT}_VERSION ${Qt${FREECAD_QT_MAJOR_VERSION}${COMPONENT}_VERSION})
35
endforeach()
36

37
set(CMAKE_AUTOMOC TRUE)
38
set(CMAKE_AUTOUIC TRUE)
39
set(QtCore_MOC_EXECUTABLE ${Qt${FREECAD_QT_MAJOR_VERSION}Core_MOC_EXECUTABLE})
40

41
add_definitions(-DQT_NO_KEYWORDS)
42

43
message(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.
47
if (Qt${FREECAD_QT_MAJOR_VERSION}Core_VERSION VERSION_LESS 5.15.0)
48
    message(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:
51
    function(qt_add_resources outfiles)
52
        qt5_add_resources("${outfiles}" ${ARGN})
53
        if(TARGET ${outfiles})
54
            cmake_parse_arguments(PARSE_ARGV 1 arg "" "OUTPUT_TARGETS" "")
55
            if (arg_OUTPUT_TARGETS)
56
                set(${arg_OUTPUT_TARGETS} ${${arg_OUTPUT_TARGETS}} PARENT_SCOPE)
57
            endif()
58
        else()
59
            set("${outfiles}" "${${outfiles}}" PARENT_SCOPE)
60
        endif()
61
    endfunction()
62

63
    function(qt_wrap_cpp outfiles)
64
        qt5_wrap_cpp("${outfiles}" ${ARGN})
65
        set("${outfiles}" "${${outfiles}}" PARENT_SCOPE)
66
    endfunction()
67

68
    function(qt_add_translation _qm_files)
69
        qt5_add_translation("${_qm_files}" ${ARGN})
70
        set("${_qm_files}" "${${_qm_files}}" PARENT_SCOPE)
71
    endfunction()
72

73
    # Since Qt 5.15 Q_DISABLE_COPY_MOVE is defined
74
    set (HAVE_Q_DISABLE_COPY_MOVE 0)
75
else()
76
    # Since Qt 5.15 Q_DISABLE_COPY_MOVE is defined
77
    set (HAVE_Q_DISABLE_COPY_MOVE 1)
78
endif()
79

80
configure_file(${CMAKE_SOURCE_DIR}/src/QtCore.h.cmake ${CMAKE_BINARY_DIR}/src/QtCore.h)
81

82
function(qt_find_and_add_translation _qm_files _tr_dir _qm_dir)
83
    file(GLOB _ts_files ${_tr_dir})
84
    set_source_files_properties(${_ts_files} PROPERTIES OUTPUT_LOCATION ${_qm_dir})
85
    qt_add_translation("${_qm_files}" ${_ts_files})
86
    set("${_qm_files}" "${${_qm_files}}" PARENT_SCOPE)
87
endfunction()
88

89
function(qt_create_resource_file outfile)
90
    set(QRC "<RCC>\n  <qresource>\n")
91
    foreach (it ${ARGN})
92
        get_filename_component(qmfile "${it}" NAME)
93
        string(APPEND QRC "        <file>translations/${qmfile}</file>")
94
    endforeach()
95
    string(APPEND QRC "  </qresource>\n</RCC>\n")
96
    file(WRITE ${outfile} ${QRC})
97
endfunction()
98

99
function(qt_create_resource_file_prefix outfile)
100
    set(QRC "<RCC>\n  <qresource prefix=\"/translations\">\n")
101
    foreach (it ${ARGN})
102
        get_filename_component(qmfile "${it}" NAME)
103
        string(APPEND QRC "        <file>${qmfile}</file>")
104
    endforeach()
105
    string(APPEND QRC "  </qresource>\n</RCC>\n")
106
    file(WRITE ${outfile} ${QRC})
107
endfunction()
108

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.