Пакетный менеджер Windows для библиотек C ++

Я работал над различными проектами с открытым исходным кодом, которые включают следующие библиотеки C ++ (и другие):

  • MuPDF
  • Увеличение
  • FreeType
  • GTKmm
  • библиотеки Hummus PDF
  • LibTiff
  • LibXML2
  • Wt xpdf
  • xpdf
  • Попплер
  • ZLib

Часто настройка этих библиотек занимает много времени при их установке на чистой машине. Есть ли способ автоматизировать получение всех зависимостей на машине с Windows?

Ближайшее, что я нашел, - это CMake, который проверяет, установлены / извлечены ли у вас зависимости перед созданием файлов проекта. Но я не нашел для Windows ничего, что могло бы проанализировать список зависимостей, а затем загрузить + установить необходимые версии.

Пожалуйста, порекомендуйте менеджер пакетов для Windows с новейшими библиотеками C ++.


person A T    schedule 16.10.2011    source источник


Ответы (7)


Взгляните на менеджер пакетов Hunter, если вы уже используете CMake для настройки своего проекта. Он автоматически загружает и строит ваши зависимости, используя всего несколько строк дополнительного кода cmake. Hunter основан на целях экспорта и импорта cmake.

Например, если вы хотите использовать библиотеку GoogleTest в своем проекте на основе cmake, вы должны добавить следующие строки в свой корневой файл CMakeLists.txt

# file root CMakeLists.txt 

cmake_minimum_required(VERSION 3.0)

# To get hunter you need to download and include a single cmake file
# see documentation for correct name
include("../gate.cmake") 


project(download-gtest)

# set the location of all your hunter-packages
set( HUNTER_ROOT_DIR C:/CppLibraries/HunterLibraries )   

# This call automaticall downloads and compiles gtest the first time
# cmake is executed. The library is then cached in the HUNTER_ROOT_DIR
hunter_add_package(GTest)

# Now the GTest library can be found and linked to by your own project
find_package(GTest CONFIG REQUIRED)

add_executable(foo foo.cpp)
target_link_libraries(foo GTest::main)

Не все библиотеки, которые вы перечисляете, доступны как «пакеты-охотники», но проект имеет открытый исходный код, поэтому вы можете создавать пакеты-охотники для своих зависимостей и фиксировать их в проекте. Здесь находится список библиотек, которые уже доступны в виде пакетов охотника.

Это не решит все ваши проблемы из коробки, потому что вам нужно создавать пакеты-охотники для своих зависимостей. Но существующий фреймворк уже выполняет большую часть работы, и лучше использовать его вместо того, чтобы иметь самодельное решение наполовину.

person Knitschi    schedule 11.04.2016
comment
Думаю, это ближе всего к тому, что я искал лет 5 назад! - person A T; 12.04.2016

Vcpkg, проект с открытым исходным кодом Microsoft, помогает получить библиотеки C и C ++ для Windows.

person sean    schedule 26.04.2017
comment
Они используют CMake ... Меня просто раздражает, что это не кроссплатформенность ни в каком смысле. В прошлый раз использовал Conan, но количество их пакетов на самом деле не увеличивалось: / - РЕДАКТИРОВАТЬ: На самом деле я думаю, что этот инструмент может быть тем, что я искал. Проверим. +1 - person A T; 27.04.2017

Biicode - это новый менеджер зависимостей для C ++. В нем также есть несколько перечисленных вами библиотек. Biicode автоматически сканирует исходные файлы на предмет зависимостей, загружает и создает их. См. здесь очень интересный пример, который включает Freeglut.

person Databyte    schedule 24.04.2015

Что я нашел:

Самое близкое к тому, что я ищу:

К сожалению, в его репозитории нет необходимых мне библиотек.

Итак, я закончил получать большинство библиотек из проекта KDE4windows и настраивать остальное.

person A T    schedule 03.11.2011

Npackd - это менеджер пакетов для Windows. По умолчанию существует репозиторий для библиотек C ++, а также сторонний репозиторий для 64-разрядных библиотек Visual Studio 2010. Boost и zlib уже находятся в репозитории по умолчанию. Если вы решите использовать Npackd, вы можете сообщить о проблеме, если вам нужны другие библиотеки.

person kaboom    schedule 14.12.2011

В Windows нет диспетчера пакетов. Перейдите на веб-сайт библиотек и загрузите сборки Windows, если они есть.

Альтернативы есть, но не лишены недостатков:

  • Cygwin: предоставляет хороший менеджер пакетов, но все двоичные файлы созданы для Cygwin, что означает, что они работают медленнее, чем их собственный эквивалент, любые приложения, использующие их, будут связываться с Cygwin DLL, и вы застряли с этой лицензией. Кроме того, использование собственного Win32 API иногда вызывает затруднения из-за несовместимости с предлагаемой эмуляцией POSIX. Только для GCC.
  • MinGW-get: менеджер пакетов для компилятора MinGW.org. Это собственные двоичные файлы Win32, но только для использования с GCC MinGW.

Не существует диспетчера пакетов или чего-либо похожего на Visual Studio или MinGW-w64.

person rubenvb    schedule 16.10.2011
comment
Я боялся, что дело обстоит именно так; Я оставлю вопрос открытым, на случай, если кто-то найдет / создаст его ... - person A T; 16.10.2011
comment
По сути, будет поддерживаться множество копий двоичных файлов: для каждой msvcr * dll, для каждого выпуска Visual Studio (они нарушают совместимость c ++ ABI с каждым выпуском (SP)), для каждой версии MinGW (которая технически может ссылаться на все msvcr * dll версии). Я не думаю, что это возможно без кучи бессмысленной работы. Я знаю, это очень прискорбно. - person rubenvb; 16.10.2011

В Windows нет управления пакетами. В Windows разработчики обычно используют полнофункциональные среды разработки, ориентированные на все, и на кухню, и сами создают монолитные приложения, поставляемые со всеми зависимостями.

person Korvian    schedule 16.10.2011