Channels ▼

Mark Nelson

Dr. Dobb's Bloggers

Setting Up a Test Environment for C++14

September 17, 2014

When I wrote this week's feature article on the new features of C++14, I needed to set up a test environment where I could use the new features, without any of that work becoming accidentally intermingled with my production toolchain. The obvious solution to this problem is to use a virtual machine and set it up with the test environment. As I have an MSDN subscription that entitles me to many hours per month on a free Microsoft Azure instance, I chose that path.

Interestingly, I did all my development using clang from the LLVM project running on a ubuntu-14.04 LTS system hosted on Microsoft Azure, using the monthly MSDN credits. I'm never sure how much those free credits really mean, but I haven't used them up yet, and it's pleasant to experiment on a well-managed VM.

My first step after creating the VM and using puTTY for an SSH connection was to install Dropbox using the generic installer from the Dropbox site:

cd ~ && wget -O - "" | tar xzf -

This gives me a URL I can use to authenticate this Dropbox account. I go to my browser to enable this VM as a legitimate user of my Dropbox account. After that, I want to use the Dropbox CLI script to control it, so I kill dropboxd with CTRL-C, then:

wget -O ~/
chmod u+x ~/
~/ start

I can now check up on the status with ~/ status, as my source files are linked to this computer. Meanwhile, I need to install the components of clang that are going to give a 3.4 compatible workstation:

sudo apt-get update
sudo apt-get install clang-3.4
sudo apt-get install libc++-dev
sudo apt-get install binutils
# create helloworld.cpp then test
clang++ -stdlib=libc++ -std=c++1y helloworld.cpp

After installing clang-3.4, libc++, and binutils, a typical example is built using this command line on Linux:

clang++ -std=c++1y -stdlib=libc++ example.cpp

Overall, it's a remarkably simple process that delivers on one of the clearest use cases for VMs.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.