2011-10-16 7 views
7

que he estado trabajando en varios proyectos de código abierto, que implican las siguientes ++ bibliotecas C (otros &):paquete de Windows, gestor de bibliotecas de C++

  • MuPDF
  • Boost
  • FreeType
  • GTKmm
  • bibliotecas PDF
  • hummus
  • libtiff
  • LibXML2
  • peso xpdf
  • xpdf
  • Poppler
  • ZLib

A menudo toma mucho tiempo para configurar estas bibliotecas, cuando la que fueron creados en una máquina limpia. ¿Hay alguna manera de automatizar el acaparamiento de todas las dependencias en una máquina de Windows?

Lo más parecido que he encontrado es CMake, que comprueba para asegurarse de tener las dependencias instaladas/extraídas antes de generar los archivos de proyecto. Pero no he encontrado nada para Windows que pueda analizar la lista de dependencias y luego descargar + instalar las versiones requeridas.

Recomiende un administrador de paquetes para Windows con las bibliotecas actualizadas de C++.

Respuesta

2

Eche un vistazo a Hunter package manager cuando ya utiliza CMake para configurar su proyecto. Descarga automáticamente y crea sus dependencias con solo unas pocas líneas de código extra. Hunter se basa en los objetivos de exportación e importación de cmake.

Por ejemplo, si desea utilizar la biblioteca GoogleTest en su proyecto basado cmake deberá añadir las siguientes líneas a su CMakeLists.txt raíz

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

No todas las bibliotecas que lista están disponibles como "cazadores paquetes "pero el proyecto es de código abierto para que pueda crear paquetes de búsqueda para sus dependencias y comprometerlos con el proyecto. Here es una lista de bibliotecas que ya están disponibles como paquetes de cazador.

Esto no resolverá todos sus problemas de la caja porque tiene que crear paquetes de cazador para sus dependencias. Pero el marco existente ya hace gran parte del trabajo y es mejor usarlo en lugar de tener una solución selfmade a medias.

+0

Creo que es lo más cercano a lo que estaba buscando ~ hace 5 años. –

1

Windows no tiene un administrador de paquetes. Vaya al sitio web de las bibliotecas y descargue las compilaciones de Windows si proporcionan alguna.

Hay algunas alternativas, pero no sin inconvenientes:

  • Cygwin: proporciona un buen gestor de paquetes, pero todos los binarios se construyen para Cygwin, lo que significa que corren más lento que su equivalente nativo, ninguna aplicación con ellas se vinculará a la DLL de Cygwin, y usted quedará atrapado con esa licencia. Además, el uso de la API Win32 nativa a veces es problemático debido a la incompatibilidad con la emulación POSIX que se ofrece. Solo para GCC.
  • MinGW-get: es un administrador de paquetes para el compilador MinGW.org. Estos son binarios Win32 nativos, pero solo para uso con MinGW's GCC.

No hay administrador de paquetes o algo equivalente para nada relacionado con Visual Studio o MinGW-w64.

+0

Tenía miedo de que ese fuera el caso; Sin embargo, mantendré la pregunta abierta, en caso de que alguien haya encontrado/creado uno ... –

+0

Habría una multitud de copias esencialmente de binarios que se mantendrían: para cada msvcr * dll, para cada versión de Visual Studio (rompen C++ Compatibilidad ABI con cada versión (SP)), para cada versión MinGW (que técnicamente podría vincular a todas las versiones msvcr * dll). No creo que sea muy posible sin cargas y montones de trabajo sin sentido. Esto es muy desafortunado, lo sé. – rubenvb

2

No hay administración de paquetes en Windows. En los desarrolladores de Windows, por lo general, se utilizan entornos de desarrollo completos de todo y el fregadero de cocina y se producen aplicaciones monolíticas, que se envían con todas las dependencias.

1

Lo que he encontrado:

es lo más parecido a lo que estoy buscando:

Por desgracia, no tiene ninguna de las bibliotecas que requiero en su repositorio.

Así que terminé de obtener la mayoría de las bibliotecas desde el KDE4windows project y construí el resto a medida.

1

Npackd es un gestor de paquetes para Windows. Hay un predeterminado repository for C++ libraries y también un tercero repository para las bibliotecas de Visual Studio 2010 de 64 bits. Boost y zlib ya están en el repositorio predeterminado. Si decide usar Npackd, puede file an issue si necesita otras bibliotecas.

2

Biicode es un nuevo administrador de dependencias para C++. También tiene algunas bibliotecas que enumeró. Biicode escanea automáticamente sus archivos fuente en busca de dependencias, las descarga y las construye. Ver here para un ejemplo muy bueno que incluye Freeglut.

2

Vcpkg, un proyecto de código abierto de Microsoft, le ayuda a obtener librerías C y C++ en Windows.

+0

Utilizan CMake ... Estoy molesto porque no es multiplataforma en ningún sentido. Estaba usando Conan la última vez, pero su número de paquetes no ha aumentado realmente:/- EDITAR: En realidad, creo que esta herramienta podría ser lo que estaba buscando. Lo verificará. +1 –

Cuestiones relacionadas