Подтвердить что ты не робот

У С++ есть менеджер пакетов, например, npm, pip, gem и т.д.?

Просто интересно, как лучше всего установить пакеты cpp. Мой фон находится в JS/Ruby/etc, так что кажется странным там cpm или тому подобное. Что мне не хватает? Я предполагаю, что это не так просто...

В качестве примера я даже не могу запустить .cpp файл с #include <iostream>, поскольку получаю fatal error: 'iostream' file not found

Редактировать для ясности: iostream был плохим примером, мой системный конфиг был выигран обратно, когда я написал это. Замените его в своем воображении нестандартной библиотекой.

4b9b3361

Ответ 2

Conan - это явный победитель сегодня, основанный на его 36+ участниках GitHub, и тот факт, что я нашел их Приступая к работе с документацией, достаточно легко работать. Он MIT лицензировал.

Conan документация даже сравнивает его с biicode который я был удивлен, не упоминался в других ответах, но biicode кажется заброшенным, как cpm.

pacm имеет некоторую активность, но LGPL может быть проблемой для некоторых проектов.

Это зависит от user3071643 answer, спасибо!

Ответ 3

Нет, конечно, нет официального менеджера пакетов для C/C++, но я дам вам несколько советов, которые, надеюсь, сделают ваши дни лучше.

Во-первых, я бы предложил исследовать CMake или GENie для определения способов встраивания библиотек в вашу систему сборки расширяемым и кросс-платформенным способом. Однако они оба предполагают, что у вас есть библиотеки, которые находятся в "легкодоступном" месте, или что они имеют ту же систему сборки, что и ваш проект. Есть способы научить и тому, как найти библиотеки, которые вам нужны. Все остальные решения зависят от платформы.

Если у вас есть Node.js или Haxe в вашем проекте, то и у npm, и у haxelib есть способы, которыми вы можете использовать C++ (в предварительно скомпилированной dll/so форме) из JavaScript или Haxe соответственно, но это большое и, вероятно, неправильное Предположение, что вы будете использовать Node.js или Haxe в проекте, который действительно нуждается в преимуществах, которые может предоставить C/C++.

Что касается мира Microsoft, я считаю, что NuGet имеет некоторые библиотеки C++, хотя в своей платформе она ограничена поддержкой Visual Studio и, вероятно, Windows, но, вероятно, лучше всего соответствует тому, что вы подразумеваете под "системой пакетов", учитывая ваши примеры (при условии, что вы имели в виду, что cpm был менеджером пакетов C, как npm - менеджером пакетов Node).

В мире Linux технически rpm, yum и apt-get do действуют как менеджеры пакетов разработки C/C++ так же, как и менеджер системных пакетов, но в отличие от npm, вы всегда должны устанавливать пакеты глобально, но, учитывая, что ваш Приложение, если оно является приложением Linux, скорее всего, будет в пакете на одном или нескольких из этих менеджеров, и в пакеты встроен список зависимостей, это не большая проблема.

Для мира macOS/iOS есть CocoaPods, но, как и NuGet, вы привязаны к платформе Apple. MacPorts всегда есть, если вы довольны менеджером пакетов в стиле Linux в качестве менеджера пакетов dev, как описано в предыдущем абзаце.

Я хочу эту npm, локальную установку, кроссплатформенную функциональность, но поскольку C/C++ используется на очень многих платформах (все?), А программисты на C/C++, как и я, склонны бросать свои... все, что заставляет нас всех (излишне?) быть занятыми, не было особого толчка для создания такого проекта, что является позором. Может быть, вы должны сделать один? Это определенно сделало бы мои дни лучше.

ОБНОВИТЬ

Конан - менеджер пакетов C/C++, которого мы все хотели. Он имеет как локальные, так и глобальные серверы, поэтому подходит как для бизнес-пакетов, так и для пакетов с открытым исходным кодом. Он молодой, и в его глобальном хранилище не так много пакетов. Мы должны все работать, чтобы добавить пакеты к нему!

ОБНОВЛЕНИЕ 2

Я обнаружил, что vcpkg был очень полезен для Windows и Android. Если вы не можете отрицать тот факт, что Conan.io написан на Python, возможно, стоит посмотреть.

Кроме того, хотя он требует, чтобы вы использовали его для себя и всех своих зависимостей, я считаю, что Build 2 должен стать окончательным победителем через несколько лет, но на момент написания этого документа он все еще готов.

Ответ 4

В других ответах упоминались конкурирующие решения, но я думал, что добавлю свой опыт. Я провел некоторые исследования по управлению пакетами и построению систем за $ WORK. Мы были с нуля, поэтому все было на столе. Это мои выводы, YMMV.

Конан

Заявки на поддержку каждой системы сборки, но вам нужно написать эти скрипты Python, чтобы сообщить Конану, как работает ваша сборка. Много магии, и легко неправильно настроить. Вам также необходимо управлять удаленными, локальными удаленными устройствами и т.д. С помощью conan create. Мы хотели чего-то простого, и это меня оттолкнуло. Интеграция IDE не работала надежно (из-за скриптов Python). Я спросил о воспроизводимых сборках, и они сказали, что это настолько воспроизводимо, насколько вы хотите. Так что это не совсем воспроизводимо.

https://conan.io/

охотник

Все пакеты определены внутри одного репозитория. Вам нужно раскошелиться, чтобы добавить пакеты. Все управляется CMake. Мы хотим отказаться от CMake из-за плохого синтаксиса, невоспроизводимых сборок и всех других проблем, которые вы, вероятно, уже знаете. Hunter предлагает воспроизводимые установки пакетов, потому что вы поставили Hunter в source-control, что превосходно.

https://github.com/ruslo/hunter

Buckaroo

Мнение, но самое простое решение. Нет необходимости управлять удаленными или ветвями списков пакетов, так как все пакеты - просто репозитории Git. Мы используем GitHub private, так что это было для нас плюсом. Мы немного колебались в использовании системы сборки Buck, которая им нужна. Оказывается, Buck все делает правильно (раньше я пользовался и мне нравились Meson & Bazel), и написание файлов Buck было меньше, чем интеграция проектов CMake. Кроме того, и это было очень важно для нас, Buckaroo на самом деле также поддерживает Java. Поддержка Maven была хакерской. Мы смогли создавать сборки для iOS и Android из одного инструмента сборки/менеджера пакетов. Документация плохая, но они реагировали на мои письма. Нужно больше пакетов.

https://buckaroo.pm/

VCPKG

Подобно Хантеру, но от Microsoft. У них нет старых версий пакетов, которые могут быть проблемой. Опять же, все делается в CMake, поэтому сборки со временем становятся более сложными и медленными. Я думаю, что VCPKG имеет большинство пакетов всех решений.

https://github.com/Microsoft/vcpkg

Ответ 5

Нет, нет диспетчера пакетов для библиотек С++. Существуют различные способы установки библиотек С++, как и с любым другим программным обеспечением: через диспетчер пакетов операционной системы, путем создания из исходного tarball или, в случае проприетарного программного обеспечения, путем запуска какой-либо программы установки.

Обратите внимание, что если #include <iostream> не работает, то ваш компилятор или среда разработки просто неправильно установлены. Я считаю, Суперпользователь - это сайт, на котором вы можете обратиться за помощью к подобным вещам.