SimpleCoder
SimpleCoder

Reputation: 69

Installing Boost v1.70 in Visual Studio 2019 using Nuget

I'm learning C++, some of the Boost libraries and VS2019 Community Edition. I'm currently reading through the Boost website's online material and the book Learning Boost C++ Libraries, trying to follow along. I would like to update to 1.70.0 and figure out exactly why my code is building correctly. I know, I know...if it's working why question it? Well, the truth is I just don't understand why!

I wasn't aware of Nuget and vcpkg prior to downloading and installing Boost 1.68.0 manually (BTW, there seems to be way too many ways of installing the libraries and it's quite confusing). I have since deleted the original Boost installation directory and tried to install the Boost libraries through Nuget in VS2019. This didn't appear to be successful (although I suspect vcpkg (see below) has something to do with it). I was getting a single linker error (can't find the .lib file) which I eventually resolved (don't ask me how...it's a confusing story involving creating a new project and cutting/pasting my code. Now it works; go figure).

Currently, when I begin an #include directive () in my code I can see the path to the files which is buried under D:\...\vcpkg\installed\x86-windows\include\boost. I've never used vcpkg directly so I have no idea why it's there. The Property Pages for the project don't list the paths under C/C++ > Additional Include Directories or under Linker > Additional Library Directories so I haven't a clue from where the compiler and linker are getting the references. There appear to be no packages installed under the Nuget UI.

Ideally, I would like to start over with the Boost installation and use VS internal tools to do so. I will probably have several different VS solutions as I explore Boost and would prefer Boost to be available to all future projects. Is that possible?

Any advice?

Upvotes: 3

Views: 5590

Answers (2)

pknodle
pknodle

Reputation: 386

One thing to keep in mind is that the "boost" package only installs the header only libraries, it doesn't install all the libraries that require a binary library.

To install the binary libraries, you need to install individual packages, for instance "boost_log-vc141" is the boost logging library.

Upvotes: 2

NathanAldenSr
NathanAldenSr

Reputation: 7961

First, install the boost package into your project using NuGet. You should see a packages.config added to your project that looks like this:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="boost" version="1.70.0.0" targetFramework="native" />
</packages>

Next, include the desired boost header file:

#include <boost\array.hpp>

You can confirm that the header is being loaded from the correct path by placing the caret after the hpp, pressing CTRL+SPACE, then hovering hovering over the item in the context list:

enter image description here

Upvotes: 0

Related Questions