Linphone - это мягкий телефон с открытым исходным кодом для голоса и видео по IP -вызовам и мгновенному обмену сообщениями.
Он полностью основан на SIP, для всех функций, присутствия и IM.
Общее описание доступно на веб -сайте Linphone
Copyright © Belledonne Communications
Linphone имеет двойную лицензию и доступен:
Под лицензией GNU/GPLV3 бесплатно (с открытым исходным кодом). Пожалуйста, убедитесь, что вы понимаете и согласны с условиями настоящей лицензии перед использованием ее (для получения подробной информации см. Файл лицензии).
Под проприетарной лицензией, за плату, будет использоваться в заявках на закрытый исходный код. Свяжитесь с Belledonne Communications за любым вопросом о затратах и услугах.
Поддерживаемые функции и RFC
Linphone Public Wiki
Вот общие инструкции по созданию Linphone для настольного компьютера. Конкретные инструкции для каждой платформы сборки описаны чуть ниже. Вам понадобятся инструменты:
cmake > = 3.22: Загрузите его в https://cmake.org/download/python : https://www.python.org/downloads/release/python-381/pip : Он уже встроен в Python, поэтому с этим не должно быть ничего общегоyasm : https://yasm.tortall.net/download.htmlnasm : https://www.nasm.us/pub/nasm/releasebuilds/doxygen (требуется для обертки CXX)Perlpystache : используйте 'pip install pystache -user'six : используйте 'pip установить шесть -пользователь'git Для настольного компьютера: вам понадобится QT6 ( 6.2 или новее ). C++17 Поддержка требуется!
Необходимо установить команду pip и выполнить:
pip install pystache six
Вы должны установить переменную среды Qt6_DIR , чтобы указать на путь, содержащий папки CMAKE QT6, и PATH к bin QT6. Пример:
Qt6_DIR="~/Qt/6.5.3/gcc_64/lib/cmake/Qt6"
PATH="~/Qt/6.5.3/gcc_64/bin/:$PATH"
Примечание. Если у вас установлен сторонний инструмент qtchooser : Eval "$ (qtchooser -print -env)" Экспорт qt6_dir = $ {qtlibdir}/cmake/qt6 Path = $ {qttooldir}: $ path 3. Для конкретных требований см. Разделы инструкции платформы ниже.
`git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive`
`cd linphone-desktop`
`mkdir build`
`cd build`
`cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo`
`cmake --build . --parallel 10 --config RelWithDebInfo`
`cmake --install .`
`./OUTPUT/bin/linphone --verbose` or `./OUTPUT/Linphone.app/Contents/MacOS/linphone --verbose`
git clone https://gitlab.linphone.org/BC/public/linphone-desktop.git --recursive
Сборка выполняется путем создания SDK и приложения. Их целью sdk и Linphone .
Создайте свою папку сборки в корне проекта: mkdir build Перейдите в эту новую папку и начните процесс сборки: cd build
Приготовьте свои варианты: cmake .. ... По умолчанию он попробует скомпилировать все необходимые зависимости. Вы можете удалить некоторые, добавив -DENABLE_<COMPONENT>=NO в команду. Вы можете использовать cmake-gui .. Если вы хотите получить лучший доступ к ним. Вы можете добавить -DCMAKE_BUILD_PARALLEL_LEVEL=<count> , чтобы сделать <count> параллельные сборки для ускорения процесса. Кроме того, вы можете добавить -DENABLE_BUILD_VERBOSE=ON , чтобы получить больше обратной связи при создании проекта.
Примечание. Для Makefile или Ninja вы должны добавить -DCMAKE_BUILD_TYPE=<your_config> если вы хотите построить в определенной конфигурации (например, RelWithDebInfo ).
cmake --build . --target <target> --parallel <count> (замените <target> на имя цели и <count> на количество параллельных сборков). Примечание. Для Xcode или Visual Studio вы должны добавить --config <your_config> , если вы хотите создать определенную конфигурацию (например, RelWithDebInfo ).
Когда все закончится, файлы будут в выходной папке в каталоге сборки. При восстановлении вы должны использовать cmake --build . --target install (или cmake --install . ) Чтобы поместить приложение в правильную конфигурацию.
Двоичные файлы внутри других папок (например, build/bin/ и linphone-sdk ) не должны работать.
При внесении некоторых модификаций в SDK вы можете восстановить только SDK с целью sdk и то же самое для приложения с linphone-qt-only
Чтобы получить пакеты, вы можете использовать cmake .. -DENABLE_APP_PACKAGING=YES . Файлы будут в папке OUTPUT/packages .
Обновите свой проект с помощью:
git fetch git pull -rebase
Обновить субмодулы из вашей текущей филиала
GIT подмодуль
Затем просто повторно создайте с помощью Cmake.
-DLINPHONESDK_DOXYGEN_PROGRAM . Например, на Mac: -DLINPHONESDK_DOXYGEN_PROGRAM=/Applications/Doxygen.app/Contents/Resources/doxygen
Если сборка сбоя SDK с чем -то вроде «cmd.exe не удалась» и больше нет информации, это может быть зависимостью, которая недоступна. Вы должны проверить, есть ли все на вашем пути. Обычно, если речь идет о VPX или кофе без кофеината, это может исходить от вашей установки Perl.
Если приложение не запускает и не создает пустой файл со случайным именем, оно может быть получено из плохой конфигурации между вашим приложением и другими подмодулами. Проверьте свои конфигурации и заставьте их с -DCMAKE_BUILD_TYPE=<your_config> или --config <your_config> .
На Mac приложение может сбоя в начале из QopenglContext. Обходной путь состоит в том, чтобы деактивировать режим MIPMAP на изображениях, добавив в свой файл конфигурации (Linphonerc): mipmap_enabled=0 в разделе [ui] .
Чтобы установить необходимые зависимости от Mac OS X, вы можете использовать Homebrew. Прежде чем установить пакеты с помощью Brew, вам, возможно, придется изменить разрешения каталогов (если вы не можете изменить разрешения с Sudo на MacOS> = High Sierra, посмотрите на этот ответ StackOverflow).
Установите Xcode из Apple Store. Запустите его хотя бы один раз, чтобы позволить ему установить свои инструменты. Вам может потребоваться запустить:
xcode-select--install
Установите Homebrew, следуя инструкциям здесь https://brew.sh/
Установить зависимости:
Brew Install Cmake Pkg-Config Git Doxygen Nasm Yasm
Сначала убедитесь, что у вас есть PIP
Затем вы можете установить пакет PIP со следующей командой:
Python -M PIP установка [Пакет]
Например, введите следующую команду:
python -m pip install pystache six graphviz
Загрузите QT, установите версию QT6 и установите переменные QT6_DIR и PATH.
Если вы строите систему ARM64 и хотите версию Intel, вы должны выбрать процессор x86_64 на стадии генерации Cmake:
-Dcmake_apple_silicon_processor = x86_64
Построить как обычно (общие шаги).
Если вы получите ошибку о модулях, которые не найдены для Python, это может быть связано с тем, что Cmake попытается использовать другую версию с вашего пути. Это может быть так, если вы установили Python из Brew. Установите модули Python с помощью абсолютного пути. Например:
/opt/homebrew/python3 -m pip install pystache six graphviz
32-разрядная версия не поддерживается, поскольку QT6 не предоставляет 32Bits Packages для MSVC. Visual Studio 2022 поддерживается только.
MinGW/MSYS2 : скачатьpacman -Sy --needed base-devel mingw-w64-mingw64-toolchainpacman -S python3-pip в консоли MSYS2 MSYSpython3 -m pip install pystache six в cmdC:msys64mingw64bin , C:msys64 and C:msys64usrbin в переменной среды вашего пути из расширенных настроек Windows. Двоичные файлы из папки MSYS (не из Mingw64) не полностью поддерживают путь Windows, и поэтому их следует избегать. Укажите -DENABLE_WINDOWS_TOOLS_CHECK=ON при создании SDK для автоматического установки инструментов MSYS2: toolchain , python , doxygen , Perl, perl , yasm , bzip2 , nasm , sed , patch , pkg-config , gettext , glib2 , intltool и graphviz gawk если необходимо)
git : используйте msys2: pacman -S git или скачать
Visual Studio также должна быть правильно настроена с помощью аддонов. В разделе «Инструменты»-> «Получить инструменты и функции», убедитесь, что установлены следующие компоненты:
Убедитесь, что вы загрузили правильную версию QT на MSVC.
Или откройте командную строку с Developer Command Prompt for VS 2022 и Call Qtenv2.bat, которая находится в ваших двоичных файлах QT, например: C:Qt<version>msvc2019binqtenv2.bat
Постройте как обычно с добавлением -A x64 в cmake .. (Общие шаги):
cmake .. -DCMAKE_BUILD_PARALLEL_LEVEL=10 -DCMAKE_BUILD_TYPE=RelWithDebInfo -A x64 Сборка по умолчанию очень длинная. Предпочитается использовать генератор ниндзя -G "Ninja"cmake --build . --target ALL_BUILD --parallel 10 --config RelWithDebInfoSudo Apt Установка qt6-dev-dev
В случае «модуля» Qtquick.*»Не установлена ошибка, вы можете установить эти пакеты:
Существуют конфигурации файлов Docker, где могут быть извлечены зависимости.
Кроме того, в папке Docker-Files доступно больше конфигураций в папке Docker Files в подмодуле Linphone-SDK.
| Параметры | Описание | Значение по умолчанию |
|---|---|---|
| Enable_app_license | Включить лицензию в пакетах. | ДА |
| Enable_app_packaging | Включить упаковку. Пакет будет развернут в OUTPUT/packages | НЕТ |
| Enable_app_pdf_viewer | Включить PDF Viewer. Нужен модуль QT PDF. | ДА |
| Enable_app_webview | Включить WebView для учетных записей. Двигатель WebView должен быть развернут, он занимает большой размер. | НЕТ |
| Enable_app_package_rootca | Встройте файл Rootca (объединение всех корневых сертификатов, опубликованных Mozilla) в пакет | ДА |
| Enable_build_app_plugins | Включить сборку плагинов | ДА |
| Enable_build_examples | Включить создание примеров | НЕТ |
| Enable_build_verbose | Позвольте генерации сборки быть более многословной | НЕТ |
| Enable_daemon | Включите интерфейс Linphone Daemon. | НЕТ |
| Enable_pqcrypto | Включить пост квант ZRTP. | НЕТ |
| Enable_strict | Строить со строгими флагами компилятора, например -Wall -Whrorr | НЕТ |
| Enable_tests | Построить с помощью тестирования двоичных файлов SDK | НЕТ |
| Enable_tests_components | Построить libbctoolbox-tester | НЕТ |
| Enable_tools | Включить инструменты SDK | НЕТ |
| Enable_unit_tests | Включить модульный тест SDK. | НЕТ |
| Enable_update_check | Включить проверку обновления. | ДА |
| Linphone_sdk_make_release_file_url | Сделайте файл выпуска, который работает вдоль check_version и используйте этот URL -адрес | "" |
Чтобы отправить патч для включения в исходный код Linphone:
Сначала убедитесь, что ваш патч применяется к последним источникам GIT перед отправкой: исправления, сделанные для старых версий, не могут и не будут объединены.
Заполните и отправьте соглашение о вкладчике, чтобы ваш патч был включен в GIT Tree, следующие ссылки там. Цель настоящего Соглашения состоит в том, чтобы предоставить нам мирное осуществление наших прав на исходный код Linphone, не теряя права на ваш вклад.
Затем перейдите в репозиторий GitHub и сделайте запросы на привлечение на основе вашего кода.
Обратите внимание, что мы не предлагаем бесплатную поддержку, и эти взносы будут рассмотрены в нашем свободном времени.
Linphone: код приложения.
Модель: управление SDK, которое работает в потоке SDK.
Просмотр: GUI материал, который работает в потоке пользовательского интерфейса.
Ядро: Основной код, который ссылается на модель и просмотр в шаблоне MVVM.
Данные: все данные, которые не являются кодом
Инструмент: Внутренняя библиотека для общих инструментов.
Cmake: сборка и установка сценариев.
Внешние: внешние проекты.
Запустите приложение с помощью параметра --verbose , чтобы получить полные журналы и отправить его с вашим запросом. Вы можете использовать кнопку «Отправить журналы» в настройках для загрузки файлов журналов и поделиться ею по электронной почте или с сообщением в соответствующем проекте GitHub:
На какой -то ОС (например, Fedora 22 и более поздней) они по умолчанию отключают вывод отладки QT. Чтобы получить полный вывод, вам нужно создать ~/.config/QtProject/qtlogging.ini и добавить:
[Rules]
*.debug=true
qt.*.debug=false