Hi,
You have good understanding of standard c++ but not of Arduino.
Notice that with Arduino we have two things that are very different.
1) Multiple .ino files are combined into a single .cpp (in tmp folder) for compilation.
2) Arduino open source shared libraries have rules. Notice that when we #include arduino libraries they are not #included with paths. Also note that there are published known locations for Arduino libraries.
These two factors should be clearly understood when working with arduino.
1) Means the build happens in a temp folder, so relative paths go out of the window. We can find all sources in the project but nothing from outside of the project.
2) Means that shared open source Arduino libraries can be easily included and shared with other people without need to change paths.
To be able to force intellisense to find libraries and hidden cores Visual Micro has complete control of the C++ include paths. To make an arduino compatible compile we can't use VS for the build so the C++ properties are only for intellisense purposes anyway.
There are compiler switches in the visual micro project properties that would allow you to add global includes but the files in the included folder will not be compiled into .o files or linked so it's not a very useful option.
The chances are that you simply want to install open source arduino librraies in this case you should use the menu items, platform explorer or arduino ide to install them. This way you keep compatibility with the arduino ide which is always recommended.
Visual micro also allows libraries to be located below the project folder in a special known folder structure. Use the "Add code" option on the visual micro menu to create a lib and view the special structure but don't do this before understanding how arduino works normally with libraries.
You can also add short cuts to shared code into the project but bear in mind any linked sources will be treated by the compiler as if they are in the root of the project folder.
In the next release of Visual Micro (which is due over the next few days) we have enabled the Microsoft C++ Shared Projects to be used with Arduino projects. This is a powerful feature that greatly expands the capabilities for code sharing.
cross-platform-code-sharing-with-visual-c/ Quote:Share source code across multiple C++ projects
Note: Some of you may be already familiar to the way Visual Studio 2013 enables code sharing between Windows Store and Windows Phone projects. With Visual Studio 2015, we expanded this support to all the platforms targeted by Visual C++ and we enabled more flexibility in the way code sharing can be achieved.
The main building block to share code across multiple projects is the “Shared Items Project” C++ project template. These “shared items” projects don’t participate in build but they can contain any number of C++ headers and sources. When you add such a project as a reference to a regular C++ project, the files in the referenced “shared items” project will simply be treated as if they were part of the referencing project and will be built under the configuration & architecture-specific settings specified by the referencing project.
Figure 1. Create a standard Visual Studio Shared C++ Project
After creating one or more shared projects you can use the "References" node in the solution explorer to add references to the shared projects. The shared projects do not build on their own, instead the code from shared projects is treated as if part of the normal arduino projects sources. This solves the issue of includes because if you have shared project "foo\subfolder1\some_code.h" you include in arduino as #include "subfolder1\some_code.h"
Figure 2. Select “Shared Projects” tab in “Add Reference” dialog to add shared item projects as references
One last thing to bear in mind about sub folders. The Arduino IDE only allows code in an \src sub folder (and below) to be compiled. If in the future you want to combine a lot of shared code projects into an Arduino sketch for compilation outside of Visual Micro (by the Arduino IDE) then you will find the transition easier if all your shared project folders that need sub folders use an \src sub folder structure. This will allow the source codes of shared projects to be physically merged into a project without need to change existing code #includes