Ответы с форумов MSDN

Сборка WebRTC из исходного кода

Date: 21.10.2020 9:54:40

Секрет сборки lib-файлов тут, насколько я понял, в следующем. Проект WebRTC.NET имеет копии скриптов сборки WebRTC, в которых директивы rtc_library заменены на директивы rtc_static_library. Сравните оригинальный (https://chromium.googlesource.com/external/webrtc.git/+/refs/heads/master/api/BUILD.gn) и WebRTC.NET (https://github.com/radioman/WebRtc.NET/blob/master/WebRtc.NET/gn/webrtc/api/BUILD.gn). Поэтому вместо dll файлов получаются lib. 

Как работает сама сборка через системы gn/ninja, описано в документации к репозиторию WebRTC: https://webrtc.googlesource.com/src/+/refs/heads/master/docs/native-code/index.md  Создавать с нуля тут нечего и незачем, нужно лишь воспользоваться имеющимся инструментарием. И обновлять самостоятельно тоже ничего не надо, это должна команда gclient sync вот здесь: https://github.com/radioman/WebRtc.NET/blob/master/WebRtc.NET/cmd/syncWebRtc.bat

Message 109

Date: 21.10.2020 17:12:02

Проблема в том, что это совсем не то же самое, что "привет мир". Скорее это похоже на гибрид ужа с ежом, или что-то в этом роде. По ссылке - руководство, как создать проект DLL в обычном Visual C++/MSBuild. WebRTC же использует, как я уже сказал, хитровывернутую связку систем сборки от Google, GN + ninja. Одно с другим не соединяется, это вообще вещи разного порядка. Проект для MSBuild, конечно, можно сгенерировать в GN, просто он будет только для красоты, никто не гарантирует, что он будет собираться. Об этом явно написано в документации: https://webrtc.googlesource.com/src/+/refs/heads/master/docs/native-code/development/index.md#using-another-build-system

Using Another Build System

Other build systems are not supported (and may fail), such as Visual Studio on Windows or Xcode on OSX. GN supports a hybrid approach of using Ninja for building, but Visual Studio/Xcode for editing and driving compilation.

To generate IDE project files, pass the --ide flag to the GN command. See the GN reference for more details on the supported IDEs.

Сделать, чтобы проект от другой системы сборки вот так в лоб собирался в MSBuild, это совсем не уровня "привет мир". Разработчики WebRTC.NET придумали хороший обходной способ, через подключение статических библиотек в один большой проект. Что тут можно сделать лучше, я даже не представляю.

Message 108

Date: 21.10.2020 19:02:18

Реализовать то же самое, но другим способом, без статических библиотек? Ну, может это и интересная задача, но у меня тут нет идей, как подступиться. Если так уж это интересует, можно начать с того, чтобы таки попробовать собрать проект Visual C++ WebRTC, сгенерированный GN, и посмотреть, соберется ли он. Если соберется, будет ли работать, если не соберется, то с какими ошибками. Так может что-нибудь выйдет, или по крайней мере в процессе познакомитесь с системами сборки.

Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub