2011-10-16 76 views
7

我一直工作在各種開源項目,其中涉及下面的C++庫(&人):Windows軟件包管理器的C++庫

  • MuPDF
  • 升壓
  • 的FreeType
  • gtkmm的
  • 豆沙PDF庫
  • 的libtiff
  • libxml2的
  • 重量的xpdf
  • 的xpdf
  • poppler的
  • 的ZLib

它往往需要很長的時間來配置這些庫,將它們設置一個乾淨的機器上時。有沒有辦法自動抓住Windows機器上的所有依賴關係?

我發現最接近的是CMake,它會在生成項目文件之前檢查以確保安裝/提取了依賴項。但我還沒有找到任何可以解析依賴列表的Windows,然後下載並安裝所需的版本。

請推薦帶有最新C++庫的Windows軟件包管理器。

回答

2

當您已經使用CMake來設置您的項目時,請查看Hunter package manager。它會自動下載並構建你的依賴關係,只需要添加幾行額外的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) 

並非所有的庫包「,但該項目是開源的,所以你可以爲你的依賴創建獵人包,並將它們提交給項目。 Here是已經作爲獵手軟件包提供的庫列表。

這不會立即解決所有問題,因爲您必須爲您的依賴項創建hunter-packages。但是現有的框架已經做了很多工作,最好使用它而不是擁有半自動解決方案。

+0

我認爲這與我5年前找的最接近! –

1

Windows沒有包管理器。轉到圖書館的網站並下載Windows版本,如果他們提供任何。

有一些替代品,但並非沒有缺點:

  • Cygwin的:提供一個很好的包管理器,但所有的二進制文件是專門爲Cygwin的,這意味着它們的運行速度比其天然等同較慢,任何應用程序使用它們將鏈接到Cygwin DLL,並且您被禁止使用該許可證。由於與所提供的POSIX仿真不兼容,使用原生Win32 API有時也很麻煩。僅限GCC。
  • MinGW-get:是MinGW.org編譯器的包管理器。這些是本機Win32二進制文件,但僅用於MinGW的GCC。

對於任何Visual Studio或MinGW-w64相關的東西,沒有包管理器或稍微等效的東西。

+0

我很害怕這樣的情況;我會保持這個問題的開放,但如果有人發現/創建了一個... –

+0

將會有大量基本上要複製的二進制副本:對於每個msvcr * dll,對於每個Visual Studio發行版(它們將C++ ABI與每個(SP)版本兼容),用於每個MinGW版本(技術上可鏈接到所有msvcr * dll版本)。如果沒有負載和無意義的工作,我不認爲這是非常可能的。這是非常不幸的,我知道。 – rubenvb

2

Windows上沒有包管理。在Windows上,開發人員通常使用全面的一切和廚房接收器開發環境,並自行生成單片應用程序,並附帶所有依賴項。

1

什麼,我發現:

最接近的就是我在尋找:

不幸的是,沒有任何我需要的庫它的存儲庫。

所以我結束了從KDE4windows project的大部分圖書館和定製其餘的。

2

Biicode是一個新的C++依賴管理器。它也有你列出的一些圖書館。 Biicode自動掃描您的源文件的依賴關係,下載並構建它們。有關Freeglut的非常酷的示例,請參見here

2

Vcpkg是一個Microsoft開放源代碼項目,可幫助您在Windows上獲取C和C++庫。

+0

他們使用CMake ...我只是惱火它不是任何意義上的跨平臺。上次使用柯南,但他們的包數量真的沒有增加:/ - 編輯:其實我認爲這個工具可能是我正在尋找。將檢查出來。 +1 –

相關問題