Диспетчер пакетов Windows для библиотек C ++ - PullRequest
9 голосов
/ 16 октября 2011

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

  • MuPDF
  • Повышение
  • FreeType
  • GTKmm
  • хумус PDF библиотеки
  • LibTIFF
  • LibXML2
  • Wt xpdf
  • Xpdf
  • Poppler
  • ZLib

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

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

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

Ответы [ 7 ]

5 голосов
/ 26 апреля 2017

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

2 голосов
/ 11 апреля 2016

Посмотрите на менеджер пакетов Hunter , когда вы уже используете CMake для настройки своего проекта. Он автоматически загружает и создает ваши зависимости с помощью всего лишь нескольких строк дополнительного кода cmake. Охотник основан на целях экспорта и импорта 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)

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

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

2 голосов
/ 24 апреля 2015

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

1 голос
/ 15 декабря 2011

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

1 голос
/ 03 ноября 2011

Что я нашел:

Ближайшая вещь к тому, что я искал:

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

Поэтому я прекратил получать большинство библиотек из проекта KDE4windows и собирал остальные.

1 голос
/ 16 октября 2011

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

0 голосов
/ 16 октября 2011

Windows не имеет менеджера пакетов.Перейдите на веб-сайт библиотек и загрузите сборки Windows, если они предоставляют.

Есть несколько альтернатив, но не без недостатков:

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

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

...