9

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

  • MuPDF
  • 促进
  • 自由式
  • GTKmm
  • 鹰嘴豆泥 PDF 库
  • LibTiff
  • LibXML2
  • 重量 xpdf
  • xpdf
  • 波普勒
  • ZLib

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

我发现最接近的是 CMake,它会检查以确保在生成项目文件之前安装/提取了依赖项。但我还没有找到任何适用于 Windows 的东西,它可以解析依赖项列表,然后下载+安装所需的版本。

请推荐一个用于 Windows 的包管理器,带有最新的 C++ 库。

4

7 回答 7

4

Vcpkg是一个 Microsoft 开源项目,可帮助您在 Windows 上获取 C 和 C++ 库。

于 2017-04-26T07:03:50.250 回答
2

Biicode是一个新的 C++ 依赖管理器。它还有一些您列出的库。Biicode 会自动扫描您的源文件以查找依赖项,下载并构建它们。请参阅此处以获取包含 Freeglut 的非常酷的示例。

于 2015-04-24T16:08:18.837 回答
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 并将它们提交到项目中。是已经作为猎人包可用的库列表。

这不会立即解决您的所有问题,因为您必须为您的依赖项创建猎人包。但是现有的框架已经做了很多工作,最好使用它而不是半途而废的自制解决方案。

于 2016-04-11T09:56:07.063 回答
1

我发现了什么:

最接近我正在寻找的东西:

不幸的是,它的存储库中没有我需要的任何库。

所以我结束了从KDE4windows 项目中获取大部分库并自定义构建其余的库。

于 2011-11-03T10:48:02.130 回答
1

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

于 2011-12-14T20:27:13.373 回答
0

Windows 没有包管理器。转到图书馆的网站并下载 Windows 版本(如果他们提供的话)。

有一些替代方案,但并非没有缺点:

  • Cygwin:提供了一个不错的包管理器,但是所有的二进制文件都是为 Cygwin 构建的,这意味着它们的运行速度比它们的本地等效文件慢,任何使用它们的应用程序都将链接到 Cygwin DLL,而你只能使用该许可证。此外,由于与提供的 POSIX 仿真不兼容,使用本机 Win32 API 有时会很麻烦。仅适用于 GCC。
  • MinGW-get:是 MinGW.org 编译器的包管理器。这些是本机 Win32 二进制文件,但仅用于 MinGW 的 GCC。

与 Visual Studio 或 MinGW-w64 相关的任何东西都没有包管理器或稍微等效的东西。

于 2011-10-16T13:54:40.030 回答
0

Windows 上没有包管理。在 Windows 上,开发人员通常使用成熟的 Everything-and-the-kitchen-sink 开发环境,并自己生成单片应用程序,附带所有依赖项。

于 2011-10-16T14:00:08.307 回答