2011-10-16 13 views
7

ho lavorato su vari progetti open-source, che coinvolgono le seguenti librerie C++ (altri &):di Windows package-manager per le librerie C++

  • MuPDF
  • Boost
  • FreeType
  • GTKmm
  • hummus librerie PDF
  • libtiff
  • libxml2
  • Wt xpdf
  • xpdf
  • Poppler
  • ZLib

Spesso ci vuole molto tempo per configurare queste librerie, quando si imposta in su su una macchina pulita. C'è un modo per automatizzare l'acquisizione di tutte le dipendenze su una macchina Windows?

Il più vicino che ho trovato è CMake, che controlla per assicurarsi che le dipendenze siano installate/estratte prima di generare i file di progetto. Ma non ho trovato nulla per Windows in grado di analizzare l'elenco delle dipendenze e quindi scaricare + installare le versioni richieste.

Si consiglia di un gestore di pacchetti per Windows con le librerie C++ aggiornate.

risposta

2

Dai un'occhiata allo Hunter package manager quando già usi CMake per configurare il tuo progetto. Scarica e crea automaticamente le dipendenze con solo poche righe di codice cmake in più. Hunter si basa su obiettivi di esportazione e importazione cmake.

Per esempio, se si desidera utilizzare la libreria GoogleTest nel progetto basato CMake è necessario aggiungere le seguenti righe al tuo CMakeLists.txt radice

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

Non tutte le librerie vi elenco sono disponibili come "Hunter pacchetti "ma il progetto è open source in modo da poter creare pacchetti di cacciatori per le dipendenze e impegnarli nel progetto. Here è un elenco di librerie già disponibili come pacchetti hunter.

Questo non risolverà tutti i tuoi problemi immediatamente, perché devi creare pacchetti di caccia per le tue dipendenze. Ma la struttura esistente fa già un sacco di lavoro ed è meglio usarla invece di avere una soluzione self made in due assunti.

+0

Penso che sia il più vicino a quello che stavo cercando ~ 5 anni fa! –

1

Windows non ha un gestore di pacchetti. Vai al sito web delle biblioteche e scarica le build di Windows se ne forniscono.

Ci sono alcune alternative, ma non senza inconvenienti:

  • Cygwin: fornisce una bella gestore di pacchetti, ma tutti i file binari sono costruiti per Cygwin, il che significa che più lenti rispetto ai loro equivalenti nativa, nessuna app utilizzando loro si collegherà alla DLL Cygwin, e tu sei bloccato con quella licenza. Anche l'uso dell'API Win32 nativa è a volte fastidioso a causa dell'incompatibilità con l'emulazione POSIX offerta. Solo per GCC.
  • MinGW-get: è un gestore di pacchetti per il compilatore MinGW.org. Questi sono binari nativi di Win32, ma solo per l'uso con GCC di MinGW.

Non esiste un gestore di pacchetti o qualcosa di leggermente equivalente per qualsiasi cosa riguardi Visual Studio o MinGW-w64.

+0

temevo che fosse il caso; Terrò la domanda aperta, nel caso qualcuno ne abbia trovato/creato uno ... –

+0

Ci sarebbe una moltitudine di essenzialmente copie di binari da mantenere: per ogni msvcr * dll, per ogni versione di Visual Studio (si rompono C++ Compatibilità ABI con ciascuna versione (SP)), per ogni versione MinGW (che tecnicamente potrebbe collegarsi a tutte le versioni di msvcr * dll). Non penso sia molto possibile senza carichi e carichi di lavoro senza senso. Questo è molto sfortunato, lo so. – rubenvb

2

Non è disponibile la gestione dei pacchetti su Windows. In genere gli sviluppatori di Windows utilizzano gli ambienti di sviluppo tutto-e-cucina-sink in piena regola e producono applicazioni monolitiche, spediti con tutte le dipendenze.

1

Quello che ho trovato:

cosa più vicina a quello che sto cercando:

Purtroppo non ha nessuno dei librerie richiedo in il suo repository.

Così ho terminato di prendere la maggior parte delle librerie dallo KDE4windows project e di personalizzare il resto.

1

Npackd è un gestore di pacchetti per Windows. È disponibile un valore predefinito repository for C++ libraries e anche una terza parte repository per le librerie a 64 bit di Visual Studio 2010. Boost e zlib sono già nel repository predefinito. Se decidi di usare Npackd, potresti file an issue se hai bisogno di altre librerie.

2

Biicode è un nuovo gestore delle dipendenze per C++. Ha anche alcune librerie che hai elencato. Biicode esegue automaticamente la scansione dei file sorgente per dipendenze, download e build. Vedi here per un esempio molto interessante che include Freeglut.

2

Vcpkg, un progetto Microsoft open source, consente di ottenere librerie C e C++ su Windows.

+0

Usano CMake ... Sono solo seccato che non sia multipiattaforma in nessun senso. Stavo usando Conan l'ultima volta, ma il loro numero di pacchetti non stava aumentando davvero:/- EDIT: In realtà penso che questo strumento potrebbe essere quello che stavo cercando. Verificherò +1 –

Problemi correlati