2011-10-16 8 views
7

que je travaille sur divers projets open-source, qui impliquent les bibliothèques C++ suivantes (& autres):package Windows-gestionnaire pour bibliothèques C++

  • MuPDF
  • Boost
  • FreeType
  • GTKmm
  • houmous bibliothèques PDF
  • libTIFF
  • LibXML2
  • Poids xpdf
  • xpdf
  • Poppler
  • ZLib

Il faut souvent beaucoup de temps pour configurer ces bibliothèques, lors de leur mise en place sur une machine propre. Y at-il un moyen d'automatiser l'accaparement de toutes les dépendances sur une machine Windows?

Le plus proche que j'ai trouvé est CMake, qui vérifie que les dépendances sont installées/extraites avant de générer vos fichiers de projet. Mais je n'ai rien trouvé pour Windows qui puisse analyser la liste des dépendances et ensuite télécharger + installer les versions requises.

Veuillez recommander un gestionnaire de paquets pour Windows avec des bibliothèques C++ à jour.

Répondre

2

Jetez un oeil à la Hunter package manager lorsque vous utilisez déjà CMake pour configurer votre projet. Il télécharge et construit automatiquement vos dépendances avec seulement quelques lignes de code cmake supplémentaires. Hunter est basé sur des cibles d'importation et d'exportation cmake.

Par exemple, si vous souhaitez utiliser la bibliothèque GoogleTest dans votre projet basé sur CMake, vous devez ajouter les lignes suivantes à votre CMakeLists.txt racine

# 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) 

pas toutes les bibliothèques que vous énumérez sont disponibles comme « chasseurs- packages "mais le projet est open source donc vous pouvez créer des paquets hunter pour vos dépendances et les engager dans le projet. Here est une liste de bibliothèques qui sont déjà disponibles en tant que paquets de chasseur.

Cela ne résoudra pas tous vos problèmes hors de la boîte parce que vous devez créer des paquets de chasseur pour vos dépendances. Mais le cadre existant fait déjà beaucoup de travail et il est préférable de l'utiliser au lieu d'avoir une solution selfmade à moitié assermentée.

+0

Je pense que c'est le plus proche de ce que je cherchais il y a ~ 5 ans! –

1

Windows ne possède pas de gestionnaire de paquets. Allez sur le site Web des bibliothèques et téléchargez les versions Windows si elles en fournissent.

Il existe des alternatives, mais pas sans inconvénients:

  • Cygwin: fournit un bon gestionnaire de paquets, mais tous les binaires sont construits pour Cygwin, ce qui signifie qu'ils courent plus lent que leur équivalent natif, les applications les utilisent sera lié à la DLL Cygwin, et vous êtes coincé avec cette licence. En outre, l'utilisation de l'API Win32 native est parfois gênante en raison de l'incompatibilité avec l'émulation POSIX proposée. Seulement pour GCC.
  • MinGW-get: est un gestionnaire de paquets pour le compilateur MinGW.org. Ce sont des binaires Win32 natifs, mais uniquement pour une utilisation avec GCC de MinGW.

Il n'y a pas de gestionnaire de paquets ou quelque chose d'équivalent pour tout ce qui concerne Visual Studio ou MinGW-w64.

+0

J'avais peur que ce soit le cas; Je garderai la question ouverte si quelqu'un a trouvé/créé un ... –

+0

Il y aurait une multitude de copies essentiellement de binaires à maintenir: pour chaque msvcr * dll, pour chaque version de Visual Studio (ils cassent C++ Compatibilité ABI avec chaque version (SP)), pour chaque version de MinGW (qui pourrait techniquement être liée à toutes les versions de msvcr * dll). Je ne pense pas que ce soit possible sans des charges et des tas de travaux absurdes. C'est très malheureux, je sais. – rubenvb

2

Il n'y a pas de gestion de paquets sous Windows. Sur Windows, les développeurs utilisent généralement des environnements de développement «tout-et-la-cuisine-puits» complets et produisent eux-mêmes des applications monolithiques, livrées avec toutes les dépendances.

1

Ce que j'ai trouvé:

chose la plus proche de ce que je cherche:

Malheureusement, il n'a pas des bibliothèques dont j'ai besoin dans son référentiel.

J'ai donc fini par obtenir la plupart des bibliothèques du KDE4windows project et la construction personnalisée du reste.

1

Npackd est un gestionnaire de paquets pour Windows. Il existe un repository for C++ libraries par défaut et un repository tiers pour les bibliothèques Visual Studio 2010 64 bits. Boost et zlib sont déjà dans le référentiel par défaut. Si vous décidez d'utiliser Npackd, vous pouvez utiliser file an issue si vous avez besoin d'autres bibliothèques.

2

Biicode est un nouveau gestionnaire de dépendance pour C++. Il a également quelques bibliothèques que vous avez énumérées. Biicode analyse automatiquement vos fichiers source pour les dépendances, les télécharge et les construit. Voir here pour un exemple très cool qui comprend Freeglut.

2

Vcpkg, un projet Microsoft Open Source, vous aide à obtenir des bibliothèques C et C++ sous Windows.

+0

Ils utilisent CMake ... Je suis juste agacé que ce n'est pas multi-plateforme dans tous les sens. J'utilisais Conan la dernière fois, mais leur nombre de paquets n'a pas vraiment augmenté:/- EDIT: En fait, je pense que cet outil pourrait être ce que je cherchais. Je vais vérifier. +1 –

Questions connexes