forked from psi-im/psi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Readme-dev-cmake-ru.txt
195 lines (156 loc) · 12.7 KB
/
Readme-dev-cmake-ru.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
Описание cmake файлов
(памятка для разработчиков)
./CMakeLists.txt - корневой файл (главный скрипт):
содержит список основных опций;
определяет тип программы Psi/Psi+
определяет Webkit/Webengine
содержит основные определения (definitions)
обработка переменных SDK
определение версии программы
подключает ccache, mxe
содержит функцию copy
подключает каталоги iris, 3rdparty, src
в случае сборки только плагинов - подключает плагины
если в корне есть каталог псимедии - собирает псимедию
./3rdparty/CMakeLists.txt - собирает статическую библиотеку qhttp
./3rdparty/qite/libqite/libqite.cmake - содержит список файлов проекта qite
./cmake/modules - каталог модулей для поиска библиотек:
./cmake/modulesCOPYING-CMAKE-SCRIPTS - файл лицензии (для решения проблем
с сопровождением)
./cmake/modules/FindLibGpgError.cmake - ищет libgpg-error
./cmake/modules/FindQJDns.cmake - ищет qjdns
./cmake/modules/FindEnchant.cmake - ищет enchant
./cmake/modules/FindLibOtr.cmake - ищет otr
./cmake/modules/FindQJSON.cmake - ищет qjson (устарело и отключено)
./cmake/modules/FindHunspell.cmake - ищет hunspell
./cmake/modules/FindLibTidy.cmake - ищет tidy или html-tidy
./cmake/modules/FindSparkle.cmake - ищет sparkle (не проверялось)
./cmake/modules/FindIDN.cmake - ищет idn
./cmake/modules/FindMINIZIP.cmake - ищет minizip
./cmake/modules/FindXCB.cmake - ищет xcb
./cmake/modules/FindLibGcrypt.cmake - ищет libgctypt или libgcrypt2
./cmake/modules/FindQca.cmake - ищет qca-qt5
./cmake/modules/FindZLIB.cmake - ищет zlib
./cmake/modules/FindPsiPluginsApi.cmake - модуль поиска файлов, необходимых для сборки плагинов
./cmake/modules/get-version.cmake - определяет версию клиента по содержимому файла ../version
./cmake/modules/win32-prepare-deps.cmake - генерирует список файлов для установки
командой make prepare-bin-libs, которая установит библиотеки зависимостей
в выходной каталог сборки. Если доступно использует windeployqt
по команде make windeploy
./cmake/modules/generate_desktopfile.cmake - генерирует .desktop файл
./cmake/modules/fix-codestyle.cmake - исправляет стиль кода исходников по make fix-codestyle
/***
модули поиска изначально сделаны так, чтобы можно было указать где искать
для этого введены переменные ИМЯ_ROOT где можно указать путь поиска
перед подключением модуля
***/
./iris/CMakeLists.txt - собирает библиотеку iris:
содержит опции для iris (продублированы в главном скрипте)
подключает qjdns (если включена опция)
подключает каталоги src/irisnet и src/xmpp
/***
./iris - каталог содержит дополнительные файлы для сборки библиоетки
отдельно от проекта Psi. Функционал реализован частично.
Требуется доработка.
***/
./iris/cmake/modules - модули поиска библиотек для iris (копии модулей
из корня)
./iris/src/irisnet/CMakeLists.txt - собирает статическую библиотеку irisnet
./iris/src/xmpp/CMakeLists.txt - собирает статическую библиотеку iris
./src/CMakeLists.txt - собирает и устанавливает проект Psi/Psi+:
подключает каталог ../translations (если он существует) и собирает
файлы переводов
ищет библиотеки и подключает их к проекту
задает версию программы на основе данных главного скрипта
генерирует файл config.h на основе файла config.h.in
генерирует файл psi_win.rc на основе файла ../win32/psi_win.rc.in и
компилирует psi_win.o
подключает файл src.cmake
подключает файл ../3rdparty/qite/libqite/libqite.cmake
подключает файл irisprotocol/irisprotocol.cmake
подключает файл protocol/protocol.cmake
подключает файл plugins/plugins.cmake
подключает каталоги AutoUpdater, options, tabs, privacy, Certificates,
avcall, psimedia, contactmanager, tools, libpsi/dialogs, libpsi/tools,
widgets, sxe, whiteboarding
подменяет выходное имя программы на расширенное (если включено)
если имя расширено, генерирует .desktop файл при помощи модуля generate_desktopfile.cmake
создает правила для установки
если включена опция DEV_MODE для win32 генерирует правила установки
библиотек зависимостей в выходной каталог сборки при помощи модуля win32-prepare-deps.cmake
подключает каталог plugins, если включена опция и скопированы плагины
./src/config.h.in - файл-шаблон для создания файла config.h
./src/src.cmake:
содержит определения (definitions) определяющие функционал программы по-умолчанию
содержит списки основных файлов исходников, необходимых для сборки:
список FORMS - содержит ui файлы
список HEADERS - содержит заголовки файлов для которых будут генерироваться .moc файлы
список SOURCES - содержит исходные файлы для которых будут генерироваться .moc файлы
список PLAIN_HEADERS - содержит заголовки файлов для которых не будут генерироваться .moc файлы
список PLAIN_SOURCES - содержит исходные файлы для которых не будут генерироваться .moc файлы
./src/AutoUpdater/CMakeLists.txt - собирает статическую библиотеку AutoUpdater
./src/avcall/CMakeLists.txt - собирает статическую библиотеку avcall
./src/Certificates/CMakeLists.txt - собирает статическую библиотеку Certificates
./src/contactmanager/CMakeLists.txt - собирает статическую библиотеку contactmanager
./src/irisprotocol/irisprotocol.cmake - список файлов исходников которые подключаются в основные списки сборки
./src/libpsi/dialogs/CMakeLists.txt - собирает статическую библиотеку libpsi_dialogs
./src/libpsi/tools/CMakeLists.txt - собирает статическую библиотеку libpsi_tools:
подключает каталог zip
./src/libpsi/tools/zip/CMakeLists.txt - собирает статическую библиотеку zip
./src/options/CMakeLists.txt - собирает статическую библиотеку options
./src/privacy/CMakeLists.txt - собирает статическую библиотеку privacy
./src/protocol/protocol.cmake - список файлов исходников которые подключаются в основные списки сборки
./src/psimedia/CMakeLists.txt - собирает статическую библиотеку psimedia
./src/sxe/CMakeLists.txt - собирает статическую библиотеку sxe
./src/tabs/CMakeLists.txt - собирает статическую библиотеку tabs
./src/tools/CMakeLists.txt - собирает статическую библиотеку tools
./src/whiteboarding/CMakeLists.txt - собирает статическую библиотеку whiteboarding
./src/widgets/CMakeLists.txt - собирает статическую библиотеку widgets
./plugins/plugins.cmake - список файлов заголовков оторые подключаются в основные списки сборки
./plugins/variables.cmake.in - шаблон файла, который содержит основные
переменные для сборки плагинов, общие для всех плагинов
./plugins/pluginsconf.pri.cmake.in - шаблон файла pluginsconf.pri, генерируемого при сборке
./plugins/CMakeLists.txt - основной скрипт управляющий плагинами
содержит основные правила сборки для всех плагинов
подключает каталоги generic, unix, dev
./plugins/generic/CMakeLists.txt:
подключает каталоги плагинов, если задана переменная BUILD_PLUGINS, то
подключает только заданные каталоги плагинов
./plugins/dev/CMakeLists.txt:
подключает каталоги плагинов, если задана переменная BUILD_PLUGINS, то
подключает только заданные каталоги плагинов
./plugins/unix/CMakeLists.txt:
подключает каталоги плагинов, если задана переменная BUILD_PLUGINS, то
подключает только заданные каталоги плагинов
./plugins/тип/плагин/CMakeLists.txt - собирает и устанавливает плагин
типа "тип" с именем "плагин". Структура у всех этих скриптов практически
не отличается
./win32/psi_win.rc.in - файл-шаблон для создания файла psi_win.rc
/***
Для удобства опакечивания плагинов, чтобы не тянуть все файлы иходников
Psi и не заниматься копированием, если включен флаг INSTALL_PLUGINS_SDK
при сборке и установке клиента Psi средствами CMake-скриптов,
вместе с основными файлами клиента Psi могут быть установлены файлы
API плагинов (includes, *.pri файлы, variables.cmake)
(путь $prefix/share/имя_клиента/plugins)
также в систему устанавливается модуль для поиска API плагинов
FindPsiPluginsApi.cmake
(путь $prefix/share/cmake/Modules)
В данном случае variables.cmake генерируется при сборке Psi и содержит
в себе:
- путь установки для плагинов
- путь установки файлов данных клиента Psi
- имя клиента (psi или psi-plus)
- defenitions для плагинов
Также CMake-скрипт сборки Psi генерирует файлы *.pri, необходимые для
сборки плагинов средствами qmake
***/
/***
Если есть необходимость дебажить плагин в линуксе, делаем следующее:
- качаем репу psi-plus-snapshots
- открываем CMakeLists.txt в корне сырцов при помощи qtcreator
- выбрав профиль и тип сборки (иначе при выборе нового типа все флаги слетят)
включаем 2 флага ENABLE_PLUGINS и DEV_MODE
- обязательно добавляем правило сборки make prepare-bin
всё, критор дебажит плагины вместе с пси
***/