Windows平台下的C++库包管理器

9

我一直在从事各种开源项目,其中涉及以下C++库(和其他库):

  • MuPDF
  • Boost
  • FreeType
  • GTKmm
  • hummus PDF libraries
  • LibTiff
  • LibXML2
  • Wt xpdf
  • xpdf
  • Poppler
  • ZLib

在干净的机器上安装这些库通常需要很长时间来配置。有没有办法自动抓取Windows机器上的所有依赖项?

我找到的最接近的是CMake,它检查是否已安装/提取了所需的依赖项,然后才生成项目文件。但我还没有找到任何可以解析依赖项列表,然后下载+安装所需版本的Windows软件。

请推荐一个在Windows上更新的C++库的软件包管理器。

7个回答

4

Vcpkg 是一个微软开源项目,可以帮助你在 Windows 上获取 C 和 C++ 库。


他们使用CMake...我只是很烦恼它在任何意义上都不是跨平台的。上次使用Conan,但他们的软件包数量并没有真正增加 :/ - 编辑:实际上我认为这个工具可能就是我正在寻找的。会去试试看。+1 - A T

2
当您已经使用CMake设置项目时,请查看Hunter软件包管理器。它只需要几行额外的CMake代码,就可以自动下载和构建依赖项。Hunter基于CMake导出和导入目标。
例如,如果您想在基于CMake的项目中使用GoogleTest库,则应将以下行添加到根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)

并非您列出的所有库都可作为“hunter-packages”使用,但该项目是开源的,因此您可以为依赖项创建hunter-packages并将其提交到项目中。这里 是已经可用的hunter-packages列表。
这并不能解决您所有的问题,因为您需要为依赖项创建hunter-packages。但是,现有的框架已经完成了大部分工作,最好使用它而不是半吊子的自制解决方案。

我认为这是大约五年前我正在寻找的最接近的东西! - A T

2

Biicode 是一个新的 C++ 依赖管理器。它也有一些库,你列出了其中的一些。Biicode 会自动扫描您的源文件以查找依赖项,下载并构建它们。点击 这里 查看一个非常酷的例子,其中包括 Freeglut。


1

Npackd 是 Windows 的一个软件包管理器。它有一个默认的C++库存储库,也有一个第三方存储库,用于 Visual Studio 2010 64位库。Boost 和 zlib 已经在默认存储库中了。如果您决定使用 Npackd,如果需要其他库,您可以提交问题


1
我找到了以下内容:
最接近我所寻找的: 不幸的是,它的存储库中没有我需要的任何库。
因此,我从KDE4windows项目获取了大部分库,并自定义构建了其余部分。

0

Windows没有软件包管理器。如果库提供了Windows版本,请前往其网站下载。

有一些替代方案,但也存在缺点:

  • Cygwin:提供了一个不错的软件包管理器,但所有二进制文件都是为Cygwin构建的,这意味着它们运行速度比本地等效版本慢,任何使用它们的应用程序都将链接到Cygwin DLL,并且您将被限制使用该许可证。此外,由于与POSIX模拟不兼容,使用本机Win32 API有时会出现问题。仅适用于GCC。
  • MinGW-get:是MinGW.org编译器的软件包管理器。这些是本地的Win32二进制文件,但仅适用于MinGW的GCC。

对于任何与Visual Studio或MinGW-w64相关的内容,都没有软件包管理器或类似的东西。


我担心情况就是这样的;不过我会保持问题开放,以防有人找到/创建了一个... - A T
需要维护大量基本上是二进制副本:对于每个 msvcr* dll,对于每个 Visual Studio 发布版(它们会在每个(SP)发布版中破坏 c++ ABI 兼容性),对于每个 MinGW 版本(理论上可以链接到所有 msvcr* dll 版本)。我认为这几乎不可能完成,需要大量的无意义工作。我知道这非常不幸。 - rubenvb

0

Windows 操作系统上没有软件包管理。在 Windows 上,开发人员通常使用全功能的开发环境,并自行打包所有依赖项,生成单体应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接