Skip to content

Commit

Permalink
Added Readme-dev-cmake-ru.txt - description of project cmake files
Browse files Browse the repository at this point in the history
  • Loading branch information
Vitozz committed Jan 25, 2018
1 parent f272579 commit bcad99a
Showing 1 changed file with 169 additions and 0 deletions.
169 changes: 169 additions & 0 deletions Readme-dev-cmake-ru.txt
@@ -0,0 +1,169 @@
Описание cmake файлов
(памятка для разработчиков)

./CMakeLists.txt - корневой файл (главный скрипт):
содержит список основных опций;
определяет тип программы Psi/Psi+
определяет Webkit/Webengine
определяет SQL
содержит основные определения (definitions)
обработка переменных SDK
определение версии программы
подключает ccache, mxe
содержит функцию copy
подключает каталоги iris, 3rdparty, src
в случае сборки только плагинов - подключает плагины

./3rdparty/CMakeLists.txt - собирает статическую библиотеку qhttp

./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

/***
модули поиска изначально сделаны так, чтобы можно было указать где искать
для этого введены переменные ИМЯ_ROOT где можно указать путь поиска
перед подключением модуля
Для модуля поиска библиотеки QCA сделан хак, который позволяет искать
библиотеку командой find_package(Qca) независимо от версии Qt,
для этого достаточно перед подключением модуля указать переменную
Qca_SUFFIX (для Qt5 - Qca_SUFFIX=-qt5, для Qt4 - Qca_SUFFIX="" )
***/

./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
подключает файл 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/generate_desktopfile.cmake - генерирует .desktop файл

./src/config.h.in - файл-шаблон для создания файла config.h

./src/src.cmake:
содержит определения (definitions) определяющие функционал программы по-умолчанию
содержит списки основных файлов исходников, необходимых для сборки:
список FORMS - содержит ui файлы
список HEADERS - содержит заголовки файлов для которых будут генерироваться .moc файлы
список SOURCES - содержит исходные файлы для которых будут генерироваться .moc файлы
список PLAIN_HEADERS - содержит заголовки файлов для которых не будут генерироваться .moc файлы
список PLAIN_SOURCES - содержит исходные файлы для которых не будут генерироваться .moc файлы

./src/win32-prepare-deps.cmake - генерирует список файлов для установки
командой make prepare-bin-libs, которая установит библиотеки зависимостей
в выходной каталог сборки. Если доступно использует windeployqt

./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

./src/plugins/plugins.cmake - список файлов заголовков оторые подключаются в основные списки сборки

./src/plugins/variables.cmake - основные переменные для сборки плагинов, общие для всех плагинов

./src/plugins/CMakeLists.txt - основной скрипт управляющий плагинами
содержит основные правила сборки для всех плагинов
подключает каталоги generic, unix, dev

./src/plugins/generic/CMakeLists.txt:
подключает каталоги плагинов, если задана переменная BUILD_PLUGINS, то
подключает только заданные каталоги плагинов

./src/plugins/dev/CMakeLists.txt:
подключает каталоги плагинов, если задана переменная BUILD_PLUGINS, то
подключает только заданные каталоги плагинов

./src/plugins/unix/CMakeLists.txt:
подключает каталоги плагинов, если задана переменная BUILD_PLUGINS, то
подключает только заданные каталоги плагинов

./src/plugins/тип/плагин/CMakeLists.txt - собирает и устанавливает плагин
типа "тип" с именем "плагин". Структура у всех этих скриптов практически
не отличается

./win32/psi_win.rc.in - файл-шаблон для создания файла psi_win.rc

/***
Плагины могут быть собраны отдельно от основных исходников, но в этом
случае необходимо указать переменную PLUGINS_ROOT_DIR где указать
путь к каталогу src/plugins/include в основных исходниках
***/

0 comments on commit bcad99a

Please sign in to comment.