{"id":112,"date":"2019-04-15T21:38:47","date_gmt":"2019-04-16T04:38:47","guid":{"rendered":"http:\/\/visualgdb.com\/w\/?p=112"},"modified":"2020-02-04T08:44:56","modified_gmt":"2020-02-04T16:44:56","slug":"arm-multiuser","status":"publish","type":"post","link":"https:\/\/visualgdb.com\/tutorials\/arm\/multiuser\/","title":{"rendered":"Sharing VisualGDB Projects Between Multiple Users"},"content":{"rendered":"<p>This tutorial shows how to share Embedded VisualGDB projects between multiple users with different settings, such as toolchain paths. The relocation features shown here are available starting from VisualGDB 5.4.<\/p>\n<p>We will create a basic project for the CC3200 device and show how to access it from 2 different users. Note that we selected the CC3200 device for this tutorial as it has a relatively small BSP compared to other device families so you can easily\u00a0<a href=\"https:\/\/github.com\/sysprogs\/tutorials\/tree\/master\/visualgdb\/ARM\/BSPRelocationTest\">clone it from our Github repository<\/a>. The steps described here will also work for other BSPs, however placing a larger BSP (e.g. STM32) under a source control would take longer.<\/p>\n<ol>\n<li>Start Visual Studio and open the VisualGDB Embedded Project Wizard:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/01-prjname.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4602\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/01-prjname.png\" alt=\"\" width=\"887\" height=\"578\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/01-prjname.png 887w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/01-prjname-300x195.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/01-prjname-768x500.png 768w\" sizes=\"(max-width: 887px) 100vw, 887px\" \/><\/a><\/li>\n<li>Select &#8220;Create a new project -&gt; Embedded Binary -&gt; MSBuild&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/02-binary.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4603\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/02-binary.png\" alt=\"\" width=\"886\" height=\"693\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/02-binary.png 886w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/02-binary-300x235.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/02-binary-768x601.png 768w\" sizes=\"(max-width: 886px) 100vw, 886px\" \/><\/a><\/li>\n<li>On the next page select the toolchain and the device you want to target. If the toolchain or BSP is not yet installed, VisualGDB can download it automatically:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/03-device.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4604\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/03-device.png\" alt=\"\" width=\"886\" height=\"693\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/03-device.png 886w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/03-device-300x235.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/03-device-768x601.png 768w\" sizes=\"(max-width: 886px) 100vw, 886px\" \/><\/a><\/li>\n<li>On the next page select a sample to use as a template for your project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/04-blinky.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4605\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/04-blinky.png\" alt=\"\" width=\"886\" height=\"693\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/04-blinky.png 886w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/04-blinky-300x235.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/04-blinky-768x601.png 768w\" sizes=\"(max-width: 886px) 100vw, 886px\" \/><\/a><\/li>\n<li>Finally select a debug method:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/05-debug.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4606\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/05-debug.png\" alt=\"\" width=\"886\" height=\"693\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/05-debug.png 886w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/05-debug-300x235.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/05-debug-768x601.png 768w\" sizes=\"(max-width: 886px) 100vw, 886px\" \/><\/a><\/li>\n<li>Press &#8220;Finish&#8221; to generate the project. Aside from the source code of the project itself, the following 2 components will also be needed to build the project:\n<ol style=\"list-style-type: lower-alpha;\">\n<li>A toolchain (i.e. GCC). It includes the compiler and common headers\/libraries like <strong>stdlib.h<\/strong>.\u00a0 The toolchains are normally installed under <strong>c:\\SysGCC<\/strong>.<\/li>\n<li>A BSP (board support package). It includes device-specific files (e.g. linker scripts or libraries supplied by the device vendor). BSPs are normally installed under <strong>%LOCALAPPDATA%\\VisualGDB\\EmbeddedBSPs<\/strong>.<\/li>\n<\/ol>\n<\/li>\n<li>Open the <a href=\"https:\/\/github.com\/sysprogs\/tutorials\/blob\/master\/visualgdb\/ARM\/BSPRelocationTest\/TestProject\/TestProject.vcxproj\">.vcxproj<\/a> file\u00a0\u00a0in a text editor. See how it uses the <strong>$(BSP_ROOT)<\/strong> variable to refer to the files from the BSP and does not hardcode any absolute paths on your machine. Press Ctrl-Shift-B to build the project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/06-main.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4607\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/06-main.png\" alt=\"\" width=\"1215\" height=\"824\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/06-main.png 1215w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/06-main-300x203.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/06-main-768x521.png 768w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/06-main-1024x694.png 1024w\" sizes=\"(max-width: 1215px) 100vw, 1215px\" \/><\/a><\/li>\n<li>You can get an overview of toolchains, BSPs and other packages managed by VisualGDB via Tools-&gt;VisualGDB-&gt;Manage VisualGDB Packages:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/pkgs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4609\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/pkgs.png\" alt=\"\" width=\"986\" height=\"793\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/pkgs.png 986w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/pkgs-300x241.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/pkgs-768x618.png 768w\" sizes=\"(max-width: 986px) 100vw, 986px\" \/><\/a><\/li>\n<li>Now we will add the folder containing your project and your shared files to a source control system. Aside from the sources, you will need to add the following files:<br \/>\n<table style=\"border-collapse: collapse; width: 100%; height: 192px;\" border=\"1\">\n<tbody>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\">Files<\/td>\n<td style=\"width: 50%; height: 24px;\">Meaning<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\">*.sln<\/td>\n<td style=\"width: 50%; height: 24px;\">Solution files<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\">*.vcxproj<\/td>\n<td style=\"width: 50%; height: 24px;\">Project files<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\">*.filters<\/td>\n<td style=\"width: 50%; height: 24px;\">Definitions of virtual source folders (e.g. &#8220;Source Files&#8221; and &#8220;Header Files&#8221;)<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\">*.vgdbsettings<\/td>\n<td style=\"width: 50%; height: 24px;\">VisualGDB-specific settings<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\">*.xml; *.props<\/td>\n<td style=\"width: 50%; height: 24px;\">VisualGDB-generated files for MSBuild-based projects<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\">*.xml; *.mak<\/td>\n<td style=\"width: 50%; height: 24px;\">VisualGDB-generated files for Make-based projects<\/td>\n<\/tr>\n<tr style=\"height: 24px;\">\n<td style=\"width: 50%; height: 24px;\">CMakeLists.txt;*.cmake<\/td>\n<td style=\"width: 50%; height: 24px;\">VisualGDB-generated files for CMake-based projects<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>If you are using git, it would be easier to simply add the masks for the temporary files\u00a0<strong>.gitignore <\/strong>and check in everything else:<\/p>\n<pre class=\"\">Debug\r\nRelease\r\nVisualGDB\r\n*.opensdf\r\n*.sdf\r\n*.suo\r\n*.old\r\n.vs\r\nVisualGDBCache\r\nCodeDB<\/pre>\n<\/li>\n<li>On a different computer clone the git repository to a local directory and try opening the project. If you don&#8217;t have the toolchain installed, VisualGDB will automatically suggest downloading it:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/10-anothertc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4610\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/10-anothertc.png\" alt=\"\" width=\"1215\" height=\"824\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/10-anothertc.png 1215w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/10-anothertc-300x203.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/10-anothertc-768x521.png 768w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/10-anothertc-1024x694.png 1024w\" sizes=\"(max-width: 1215px) 100vw, 1215px\" \/><\/a><\/li>\n<li>Similarly, VisualGDB will suggest downloading the missing BSP:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/09-anothermach.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4611\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/09-anothermach.png\" alt=\"\" width=\"1215\" height=\"824\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/09-anothermach.png 1215w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/09-anothermach-300x203.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/09-anothermach-768x521.png 768w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/09-anothermach-1024x694.png 1024w\" sizes=\"(max-width: 1215px) 100vw, 1215px\" \/><\/a>The paths where you install the toolchain and the BSP don&#8217;t have to be the same across different machines. VisualGDB will automatically locate both the toolchain and BSP and use the correct paths each time you open a project.<\/li>\n<li>Now we will show how to check in the BSP under the source control. This will allow making changes to the BSP and automatically sharing them across all machines in your environment. Open VisualGDB project Properties and go to the <strong>Embedded Project<\/strong> page, then click &#8220;Change&#8221; near the <strong>Shared Files Location<\/strong> label (Custom edition and higher):<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/11-change.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4612\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/11-change.png\" alt=\"\" width=\"1057\" height=\"627\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/11-change.png 1057w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/11-change-300x178.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/11-change-768x456.png 768w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/11-change-1024x607.png 1024w\" sizes=\"(max-width: 1057px) 100vw, 1057px\" \/><\/a><\/li>\n<li>Place the BSP under your source control directory:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/12-relocated.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4613\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/12-relocated.png\" alt=\"\" width=\"565\" height=\"234\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/12-relocated.png 565w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/12-relocated-300x124.png 300w\" sizes=\"(max-width: 565px) 100vw, 565px\" \/><\/a>Confirm the BSP location so that VisualGDB can remember it for other projects.<\/li>\n<li>If you open the project on a machine where you haven&#8217;t used this BSP yet, click &#8220;Locate BSP&#8221; and point VisualGDB to the BSP.XML file in the relocated BSP directory:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/13-browse.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4614\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/13-browse.png\" alt=\"\" width=\"1215\" height=\"824\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/13-browse.png 1215w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/13-browse-300x203.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/13-browse-768x521.png 768w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/13-browse-1024x694.png 1024w\" sizes=\"(max-width: 1215px) 100vw, 1215px\" \/><\/a><\/li>\n<li>VisualGDB will then update the BSP references (depending on your VS version, you may need to restart it to reset any cached values) and you will be able to build the project without any changes to the project file itself:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/14-relocated.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-4615\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/14-relocated.png\" alt=\"\" width=\"1215\" height=\"824\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/14-relocated.png 1215w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/14-relocated-300x203.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/14-relocated-768x521.png 768w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/07\/14-relocated-1024x694.png 1024w\" sizes=\"(max-width: 1215px) 100vw, 1215px\" \/><\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to share Embedded VisualGDB projects between multiple users with different settings, such as toolchain paths. The<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[53],"_links":{"self":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/112"}],"collection":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/comments?post=112"}],"version-history":[{"count":3,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/112\/revisions"}],"predecessor-version":[{"id":5614,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/112\/revisions\/5614"}],"wp:attachment":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/media?parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/categories?post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/tags?post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}