BASE:C:\Users\MyComputer\Desktop\boost_1_7_0
INCLUDE:C:\Users\MyComputer\Desktop\boost_1_7_0\boost
LIB:C:\Users\MyComputer\Desktop\boost_1_7_0\libs
That include is likely wrong!
I use
INCLUDE:C:\Users\MyComputer\Desktop\boost_1_7_0
No idea about the LIB path; I only use boost header files.
Edit: The BASE is correct.
Tim S.
Basically the internet is full of crap used by lazy/dumb people who want everything for free. Keeping documentation up-to-date is quite a time consuming task and people blindly copy-pasting everything without trying to understand what they do doesn't help either. All your examples are easy to explain once you understand how global variables work.
A global variable is a structured element with multiple fields, the syntax $(#foo) references the base field, the only required element. The syntax $(#foo.bar) references the bar field. Some fields have a default value that gets appended to the base field if the field is empty, currently i don't know if this applies to all predefined fields but i know for sure it applies to include and lib, and surprise, their default value is actually their name. This information should be somewhere in the documentation because i'm sure i didn't dig that out of the source code, but it's been so long ago i gathered this, i can't remember.
With this information, and the knowledge of the layout of the boost source tree, your results can be easily explained. A boost source tree looks like this if you put the compiled libraries only in the stage area (the folder libs contains the sources but usually NOT the compiled libraries):
root
+- boost <- Headers reside inside here
|- stage
|- lib <- Libraries reside inside here
Because of the way how boost headers get included your resulting directories must be:
include: root
lib: root/stage/lib
Applied to your examples:
BASE:C:\Users\MyComputer\Desktop\boost_1_7_0
INCLUDE:C:\Users\MyComputer\Desktop\boost_1_7_0\boost
LIB:C:\Users\MyComputer\Desktop\boost_1_7_0\libs
and my build options menu should under search directories be:
compiler tab $(#boost.include)
linker tab $(#boost.lib)
Results into:
include: root/boost
lib: root/libs
BASE:C:\Users\MyComputer\Desktop\boost_1_7_0\boost
INCLUDE:C:\Users\MyComputer\Desktop\boost_1_7_0
compiler tab $(#boost.include)
linker tab $(#boost.lib)
Results into:
include: root
lib: root/boost/lib
BASE:C:\Users\MyComputer\Desktop\boost_1_7_0\
INCLUDE:C:\Users\MyComputer\Desktop\boost_1_7_0\boost
compiler tab $(#boost)
linker tab $(#boost.lib)
Results into:
include: root
lib: root/lib
TL;DR
Correct configuration for the default layout i mentioned earlier (referencing the variable itself saves you from specifying the root directory multiple times and makes it easier to update):
Variable name: boost
BASE: C:\Users\MyComputer\Desktop\boost_1_7_0
INCLUDE: $(#boost)
LIB: $(#boost)\stage\lib
the variable name libxml
BASE:C:\Users\MyComputer\Desktop\Libxml2\libxml2-2.9.3-win32-x86_64
INCLUDE:C:\Users\MyComputer\Desktop\Libxml2\libxml2-2.9.3-win32-x86_64
LIB:C:\Users\MyComputer\Desktop\Libxml2\libxml2-2.9.3-win32-x86_64
and my build options menu:
compiler tab $(#libxml.include)
linker tab $(#libxml.lib)
and include directive
#include <libxml\libxml2\libxml\xmlmemory.h>
The above will result in
$(#libxml.lib) being "C:\Users\MyComputer\Desktop\Libxml2\libxml2-2.9.3-win32-x86_64"
$(#libxml.include) being "C:\Users\MyComputer\Desktop\Libxml2\libxml2-2.9.3-win32-x86_64"
What you likely would want is
BASE:C:\Users\MyComputer\Desktop\Libxml2\libxml2-2.9.3-win32-x86_64
INCLUDE:
LIB:
Which will result in
$(#libxml.lib) being "C:\Users\MyComputer\Desktop\Libxml2\libxml2-2.9.3-win32-x86_64\lib"
$(#libxml.include) being "C:\Users\MyComputer\Desktop\Libxml2\libxml2-2.9.3-win32-x86_64\include"
Edit: And most software would include include <libxml\xmlmemory.h> or <xmlmemory.h> instead of <libxml\libxml2\libxml\xmlmemory.h>
Edit2: The slash was wrong! And most software would include <libxml/xmlmemory.h> or <xmlmemory.h>
Tim S.