company_banner

Цвет настроения Linux, цвет настроения Mac OS

Автор оригинала: Eric Mittelette
  • Перевод
Стереотипы давно в прошлом. Сегодня Microsoft придерживается концепции «любой разработчик, любое приложение, любая платформа». Сегодня расскажем вам о vcpkg, кроссплатформенном менеджере пакетов, предназначенном для быстрой установки C/C++ библиотек, который теперь стал доступен не только для Windows, но и для Linux и Mac OS. Заглядывайте под кат!



Теперь можно мгновенно получить доступ к каталогу vcpkg с библиотеками С++ еще на двух платформах, выполнив для этого всего два простых действия, знакомых по Windows и UWP.

Подключаемый модуль vcpkg прошел долгий путь с момента своей первой презентации на конференции CppCon-2016. Вначале было всего 20 библиотек, но за последние 19 месяцев их число выросло невероятно — более чем до 900! Это неоценимая заслуга замечательных участников нашего сообщества.

Судя по вашим отзывам, именно поддержка систем Linux и Mac оказалась самой востребованной из потенциальных возможностей. И сегодня мы видим, что подключаемый модуль vcpkg стал доступен гораздо большему числу пользователей, упрощая кросс-платформенный доступ к еще большему количеству библиотек С++. Сегодня мы предлагаем вам оценить работу с vcpkg в ОС Windows, Linux или Mac OS.

Использование vcpkg в ОС Linux и Mac


Теперь подключаемый модуль vcpkg поддерживает совместимость с ОС Linux, Mac и другими системами POSIX. Это стало возможным только благодаря личному вкладу нескольких замечательных участников сообщества в разработку.

На момент написания этой публикации в блоге для Linux и Mac насчитывалось свыше 300 библиотек, и мы ожидаем, что скоро их станет гораздо больше. В настоящее время ведется тестирование vcpkg в ОС Ubuntu-LTS 16.04/18.04, мы успешно опробовали этот новый инструмент в Arch, Fedora и FreeBSD.

Начало работы


  1. Клонируйте репозиторий vcpkg: git clone https://github.com/Microsoft/vcpkg
  2. Запустите начальный загрузчик vcpkg: ./bootstrap-vcpkg.sh
  3. После установки vcpkg вы можете создать любую библиотеку, используя следующий синтаксис:
    vcpkg install sdl2

    Будет установлена sdl2:x64-linux (по умолчанию устанавливается стационарная 64-разрядная версия, пока единственная доступная для Linux).

    Результат (.h, .lib) сохраняется в то же дерево папок, и на эту папку следует ссылаться в конфигурации системы управления сборками.
  4. Работа с созданной библиотекой:
    • Если в качестве системы управления сборками применяется CMake, используйте CMAKE_TOOLCHAIN_FILE, чтобы открыть доступ к библиотекам для `find_package()`. Например: cmake .. “-DCMAKE_TOOLCHAIN_FILE=vcpkg/scripts/buildsystems/vcpkg.cmake”.
    • Необходимо сделать ссылку на папку vcpkg, в которой содержатся заголовки (\vcpkg\installed\x64-linux\include), а также на папку .lib (\vcpkg\installed\x64-linux\lib), чтобы создать проект, используя сгенерированные библиотеки.





Использование vcpkg для привязки к Linux из Windows посредством WSL


Поскольку WSL является Linux-системой, мы будем использовать ее аналогично Linux. Правильно выполнив настройку один раз, вы будете создавать библиотеки Linux на компьютере с ОС Windows точно так же, как если бы они генерировались в песочнице Linux. Следуйте инструкциям, используемым для установки в Linux. Ознакомьтесь с инструкциями по установке WSL в Windows 10 и настройке с помощью расширения Visual Studio для Linux.



Как показано на снимке экрана выше, к каталогу vcpkg можно осуществлять доступ как из Windows, так и из WSL. В этом примере построение sdl2 и sqlite3 выполнялось в WSL (двоичные коды для Linux); sqlite3 также предназначена и для ОС Windows (Windows dll).

Заключение


Установите диспетчер пакетов vcpkg в ОС Linux или Mac, протестируйте его в своих кросс-платформенных проектах, поделитесь впечатлениями и расскажите, что еще мы можем улучшить.

Ваши отзывы и комментарии действительно очень важны для нас. Чтобы поделиться мнением или задать вопрос, создайте обращение на GitHub или отправьте нам сообщение на адрес электронной почты vcpkg @ microsoft.com. Мы также будем благодарны, если вы найдете пару минут для участия в нашем опросе.

Об авторе


Эрик Митлетт — старший менеджер программ в команде VC++. Он владеет библиотеками (STL, VC Runtime CPPRestSDK FC / ATL и vcpkg). Участвовал в создании и презентации vcpkg 18 месяцев назад. Вначале 20 библиотек, теперь более чем 900. Кроме того, теперь они поддерживаются Linux и Mac. Если у вас есть вопросы, можете написать Эрику: ericmitt @ microsoft.com.
Microsoft
Microsoft — мировой лидер в области ПО и ИТ-услуг

Комментарии 28

    +4
    Ненужно. В старом mingw есть mingw-get, в новом mingw есть портированный из арча pacman, также есть порт dpkg под винду (wpkg). Но нет, у Microsoft как всегда синдром «not invented here».
      –1
      Mingw-get — имелся в виду mingwport/mgwport. Mingw-get — установщик пакетов, mgwport — система сборки пакетов.
      +2
      apt/dpkg/rpm, snap, AppImage, flatpak, что еще? vcpkg, ну ок, а в чем плюсы? просто набор c++ библиотек? а зачем им менеджер пакетов? что то я совсем не понимаю.
        –8
        В этом примере построение sdl2 и sqlite3 выполнялось...
        Построение? Автор совсем не знает что такое сборка проекта?
        Александр Гуреев
        Пользователь
        А, всё ясно. На IT ресурсе, в блоге одной из крупнейших технологических компаний, пишет обычный пользователь… Куда катится мир? :(
          +4
          Внизу мы указали контакт автора, можете спросить у него про сборку.
          Ну а должность тут много кто не указывает. :)
            +1
            Всё-таки, несмотя на переход на личные оскорбления и неправильный выбор канала (сообщение об ошибке в комментарии, а не в личном сообщении), по сути Revertis, похоже, прав — это называется сборкой, а не построением. Даже Microsoft в Microsoft Terminology Collection пишет «сборка» (хотя в Visual Studio, возможно, по инерции всё ещё использует «построить» — не проверял). И это именно к переводчику, а не к автору.
              –2
              Да у него и предыдущие «статьи» это машинные переводы сгенерированного текста. Сами посмотрите.
              И я пишу о «переводчике», не об авторе, которым вы пытаетесь прикрыться ;)
              sahsAGU, давайте на вычитку свои тексты тем, кто хоть немного разбирается в IT.
            +3
            А вот зря вы язвите. В прошлых версиях MS Visual Studio (за последние не ручаюсь) были именно кнопки «Построить решение», «Перестроить решение».


            Так что вполне себе официальный термин от Microsoft.
              +2
              До 2010 как минимум.
                +2

                В Delhi была кнопка "сделать всё" :)

                  0
                  В пиратском переводе дельфи, вы хотели сказать.
              +2

              Больше похоже на очень сырой аналог homebrew.

                +1
                Интересно было бы почитать про возможность добавления кастомных пакетов и про возможность изменения стандертных.
                  +2

                  очередной выстрел из башни Редмонда по двум зайцам: сразу и Cygwin и Wine. :)

                    +1
                    Ортогонально. Подсистема Linux on Windows — да, оно, а менеджер пакетов вещь специфичная, и по сути даже в WSL работает как в чистом Linux, не интегрируясь в Windows (да и не реально это).
                    0

                    и отрекашетит по "менеджерам пакетов", с их git-лапшой. в данном случае .dll или есть, или не нужен.

                      –2
                      Круто! Давно пора! Было непонятно почему под С++ нельзя создать аналог компонентов для C#, Java или npm для JavaScript. Количество программ и область применения C++ выросла бы в разы!
                        +4
                        это такой троллинг?
                          0
                          Каких компонентов? Библиотеки и так есть.
                            +2
                            Библиотеки ничего не стоят, если их нельзя или слишком сложно собрать и интегрировать в свой проект. Библиотеки на С++ делятся на две категории: компилируемые в один клик, и компилируемые с матами за два рабочих дня. К сожалению, вторых больше, и самые нужные обычно в этой категории.
                            Менеджер пакетов ой как нужен. Лучше бы один стандартный под каждую ОС, чем кто во что горазд, но хоть так.
                            +2

                            Цитата с реддита:


                            Welcome to the big leagues, where there are approximately 74 different build systems and a patchwork framework of 28 various package managers, most of which only support a certain platform/environment and are useless outside of it.
                            +4
                            поправьте меня если я не прав, но разве vcpkg не аналог conan но без поддержки версионирования/разных компиляторов/разных опций сборки?
                              +2

                              А как же Chocolatey?

                                +3

                                clickbait заголовок, никак не связанный с содержанием. Дизлайк.

                                  +6
                                  Я не понял, еще один менеджер пакетов под плюсы? Conan, CPM, PACM, SPACK — тысячи их. И даже у Microsoft есть NuGet для C++. Нафига еще один, лучше бы объединились и продвигали какой-нибудь один, например, Conan. Чтобы может быть когда-нибудь у C++ появился бы стандартный менеджер пакетов.
                                    0
                                    Судя по вашим отзывам, именно поддержка систем Linux и Mac оказалась самой востребованной из потенциальных возможностей.

                                    Понял как "и под windows никому особо не нужно".


                                    Это стало возможным только благодаря личному вкладу нескольких замечательных участников сообщества в разработку.

                                    Энтузиасты, со всеми вытекающими.

                                      0
                                      Только не «Mac OS» пишется, а «macOS».
                                        0

                                        А это зависит от версии. Некоторые называются "OS X", некоторые "Mac OS X"

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое