Llvm.NET предоставляет привязки языка LLVM и среды выполнения для приложений на основе платформы .NET. Целью Llvm.NET является создание надежной библиотеки классов, точно отражающей модель C++ LLVM. Это достигается путем расширения API LLVM-C, который упакован в нативную Windows DLL (LibLLVM.DLL). Llvm.NET использует поддержку LibLLVM для доступа к библиотеке классов LLVM и проектирования её в управляемую библиотеку .NET, которая точно отражает первоначальный дизайн библиотеки классов.
Цель состоит в том, чтобы максимально точно соответствовать оригинальной модели классов, при этом предоставляя объектную модель для приложений .NET, которая кажется знакомой и последовательной с общими стилями и шаблонами в приложениях .NET Framework. Таким образом, хотя имена классов, методов и перечислений часто аналогичны своим эквивалентам в LLVM, они не всегда совпадают.
Документация для библиотеки классов Llvm.NET расположена по адресу http://netmf.github.io/Llvm.NET
Llvm.NET начался с LLVM 3.4 как обёртка C++/CLI, что позволило более тесное связывание с оригинальной моделью объектов C++, чем это было поддержано официальным API LLVM-C. По мере развития Llvm.NET также развивалось LLVM. Постепенно база кода LLVM перешла на требование поддержки C++11 в языке для сборки. Это стало проблемой для обёртки C++/CLI, так как компилятор Microsoft C++/CLI не поддерживал синтаксис C++11. В результате был сделан переход в Llvm.NET на расширенный C API с адаптерным слоем на C#, чтобы обеспечить полный опыт, который ожидают разработчики .NET. Хотя переход был трудоёмким, изменениям подверглось очень мало прикладного кода.### Поддержка платформ На данный момент LLVM.NET поддерживает сборки Win32 и x64, ориентированные на полную рабочую среду десктопа версии 4.5. Чтобы упростить жизнь, пакет NuGet содержит как нативные бинарные файлы платформы, так и сам LLVM.NET, который собран для платформы "AnyCPU". LLVM.NET содержит код для динамического обнаружения платформы, на которой он запущен, и загрузки соответствующего DLL. Это позволяет приложениям строиться для AnyCPU без необходимости создания множества конфигураций сборки и каналов выпуска для приложений. Однако, если ваше приложение имеет другие требования, которые требуют конкретной целевой платформы, то LLVM.NET всё равно может работать.### Сборка Llvm.NET
Для получения более подробной информации о работе со скриптом откройте командную строку PowerShell в директории исходного кода Llvm.NET и выполните PS> Get-Help .\Build-LlvmWithVs.ps1
.
Примечание: На типичной машине разработчика сборка библиотек LLVM занимает примерно 1,5 часа, поэтому обычно лучше всего её запустить ночью или когда вы отсутствуете перед компьютером. К счастью, это требуется сделать только один раз для каждой версии LLVM.
Для получения более подробной информации о работе со скриптом откройте командную строку PowerShell в директории исходного кода Llvm.NET и выполните PS> Get-Help .\Build-LlvmWithVs.ps1
.
_Примечание: На типичной машине разработчика сборка библиотек LLVM занимает примерно 1,5 часа, поэтому обычно лучше всего её запустить ночью или когда вы отсутствуете перед компьютером. К счастью, это требуется сделать только один раз для каждой версии LLVM._Если у вас есть Visual Studio 2017 RC (или RTM, когда она будет доступна) с Visual C++ Tools для CMake,
вы можете собирать библиотеки LLVM в VS. Однако, по умолчанию происходит сборка всего проекта, что может занять до шести часов на большинстве типичных машин. Вместо полной сборки можно использовать Build-LlvmWithVS.ps1 PowerShell-скрипт с параметром -CreateSettingsJson
для создания файла CMakeSettings.json,
который Visual Studio использует для конфигурации,
чтобы уменьшить сборку до необходимых библиотек для Llvm.NET.#### Использование Visual Studio
Репозиторий включает файл решения Visual Studio, который позволяет собирать Llvm.NET и LibLLVM для одной конфигурации платформы, а также запускать доступные единичные тесты. Это основной способ работы с исходным кодом Llvm.NET во время разработки.
Поддержка автоматизированной сборки для Llvm.NET использует файл проекта BuildAll.slnproj для сборки всех исполняемых файлов, подписывает их [подпись пока не поддерживается], и генерирует пакет NuGet. Чтобы собрать полный пакет, просто выполните команду msbuild BuildAll.slnproj
.
Пример приложения TestDebugInfo предоставляет пример использования Llvm.NET для генерации LLVM Bitcode, эквивалентного тому, что генерирует компилятор Clang для простого файла на языке C.
TestDebugInfo фактически не парсит исходный код; вместо этого это рукописной построенный и документированный пример того, как использовать Llvm.NET для генерации байт-кода.
Этот проект принял код поведения, определённый Contributor Covenant для уточнения ожидаемого поведения в нашем сообществе. Для получения дополнительной информации см. Код поведения .NET Foundation.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )