A T
A T

Reputation: 13826

Windows package-manager for C++ libraries

I've been working on various open-source projects, which involve the following C++ libraries (& others):

It often takes a long time to configure these libraries, when setting them up on a clean machine. Is there a way to automate the grabbing of all dependencies on a windows machine?

The closest I've found is CMake, which checks to make sure you have the dependencies installed/extracted before generating your project files. But I haven't found anything for Windows which can parse the list of dependencies and then download+install the required versions.

Please recommend a package manager for Windows with up-to-date C++ libraries.

Upvotes: 9

Views: 4832

Answers (7)

Knitschi
Knitschi

Reputation: 3112

Take a look at the Hunter package manager when you already use CMake to setup your project. It automatically downloads and builds your dependencies whith only a few lines of extra cmake code. Hunter is based on cmake export and import targets.

For example if you want to use the GoogleTest library in your cmake based project you would add the following lines to your root 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)

Not all the libraries you list are available as "hunter-packages" but the project is open source so you can create hunter-packages for your dependencies and commit them to the project. Here is a list of libraries that are already available as hunter packages.

This will not solve all your problems out of the box because you have to create hunter-packages for your dependencies. But the existing framework already does a lot of the work and it is better to use that instead of having a half-assed selfmade solution.

Upvotes: 2

sean
sean

Reputation: 478

Vcpkg, a Microsoft open source project, helps you get C and C++ libraries on Windows.

Upvotes: 4

Databyte
Databyte

Reputation: 1481

Biicode is a new dependency manager for C++. It also has a few libraries that you listed. Biicode automatically scans your source files for dependencies, downloads and builds them. See here for a very cool example that includes Freeglut.

Upvotes: 2

kaboom
kaboom

Reputation: 611

Npackd is a package manager for Windows. There is a default repository for C++ libraries and also a third party repository for Visual Studio 2010 64 bit libraries. Boost and zlib are already in the default repository. If you decide to use Npackd, you could file an issue if you need other libraries.

Upvotes: 1

A T
A T

Reputation: 13826

What I've found:

Closest thing to what I'm looking for:

Unfortunately it doesn't have any of the libraries I require in its repository.

So I ended getting most of the libraries from the KDE4windows project and custom building the rest.

Upvotes: 1

Korvian
Korvian

Reputation: 9

There is no package management on Windows. On Windows developers typically use full-blown everything-and-the-kitchen-sink development environments and produce monolithic applications themselves, shipped with all dependencies.

Upvotes: 0

rubenvb
rubenvb

Reputation: 76519

Windows does not have a package manager. Go to the libraries' website and download the Windows builds if they provide any.

There are some alternatives, but not without drawbacks:

  • Cygwin: provides a nice package manager, but all binaries are built for Cygwin, which means they run slower than their native equivalent, any apps using them will link to the Cygwin DLL, and you're stuck with that license. Also the use of the native Win32 API is sometimes troublesome due to incompatibility with the POSIX emulation offered. Only for GCC.
  • MinGW-get: is a package manager for the MinGW.org compiler. These are native Win32 binaries, but only for use with MinGW's GCC.

There is no package manager or slightly equivalent thing for anything Visual Studio or MinGW-w64 related.

Upvotes: 0

Related Questions