2011-10-16 79 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 –

相关问题