{"id":10365,"date":"2016-09-13T11:48:35","date_gmt":"2016-09-13T18:48:35","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/vcblog\/?p=10365"},"modified":"2019-02-18T18:04:43","modified_gmt":"2019-02-18T18:04:43","slug":"visual-c-for-linux-1-0-5-updates","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/visual-c-for-linux-1-0-5-updates\/","title":{"rendered":"Visual C++ for Linux 1.0.5 Updates"},"content":{"rendered":"<p><a href=\"http:\/\/aka.ms\/vslinux\">The Visual C++ for Linux announcement post<\/a> has been updated with the content below. If you are already familiar with this extension this post covers what is new since <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/visual-c-for-linux-updates\/\">our last update<\/a>.<\/p>\n<p>We recently posted new bits for our <a href=\"http:\/\/aka.ms\/vslinuxext\">1.0.5 release of the Visual C++ for Linux extension<\/a> for Visual Studio 2015. This release has some major performance improvements that feature incremental copy and build, and considerably reducing the number of connections to the remote Linux machine. We\u2019ve also made significant improvements in IntelliSense since our last post here.<\/p>\n<ul>\n<li>Makefile project template<\/li>\n<li>Remote source copy management<\/li>\n<li>Overridable C\/C++ compiler path<\/li>\n<li>New debugging options<\/li>\n<\/ul>\n<h2>Makefile Project Template<\/h2>\n<p>A Makefile project template has been added that supports using external build systems on your remote machine (make, gmake, CMake, bash script etc.). This works as you would expect under the C++ project property pages you can <a href=\"https:\/\/blogs.msdn.microsoft.com\/vcblog\/2016\/03\/30\/visual-c-for-linux-development\/#includes\">set your local Intellisense paths<\/a>, then on the remote build property page you add the commands, semicolon separated, to trigger your build on the remote machine. In the example here I\u2019m switching to my remote directory with my build script and then executing it.<\/p>\n<p>I\u2019ve thrown together some <a href=\"https:\/\/github.com\/robotdad\/vclinux\">bash scripts that can generate our makefile project with your sources<\/a> based on the directory structure. These scripts do assume that the source code on the Linux machine is in a directory that has been mapped to Windows. They do set the new flag in the project properties to not copy files remotely. These are unlikely to meet all needs but should give you a good starting point if you have a large project.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_makefile_properties.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_makefile_properties-489x350.png\" alt=\"Makefile project proeprties\" width=\"489\" height=\"350\" class=\"aligncenter wp-image-10325 size-mediumlarge\" \/><\/a><\/p>\n<h2>Remote file copy management<\/h2>\n<p>We also made it possible to specify at the file and project level whether or not a file should be remotely copied. This means you can use your existing build mechanisms just by mapping your existing sources locally and adding them to your project for editing and debugging.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_copysources_properties.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_copysources_properties-500x151.png\" alt=\"Copy Sources project properties\" width=\"500\" height=\"151\" class=\"aligncenter size-mediumlarge wp-image-10355\" \/><\/a><\/p>\n<h2>Overridable C\/C++ Compiler Path<\/h2>\n<p>You can now override the compiler commands used on the remote machine in the Property Pages. That will enable you to point to specific versions of GCC if needed or even point to an alternate compiler like clang. You can use either full paths or a command available on your path.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_compiler_properties.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_compiler_properties-488x350.png\" alt=\"Compiler project properties\" width=\"488\" height=\"350\" class=\"aligncenter size-mediumlarge wp-image-10345\" \/><\/a><\/p>\n<p>Under Build Events node of the project properties there are also new pre-build and pre-link remote build events as well as options for arbitrary file copy in all build events to provide greater flexibility.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_buildevents_properties.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_buildevents_properties-500x206.png\" alt=\"Build events project properties\" width=\"500\" height=\"206\" class=\"aligncenter size-mediumlarge wp-image-10335\" \/><\/a><\/p>\n<h2>New Debugging Options<\/h2>\n<p>There have also been improvements in debugging. We added a new gdb mode to improve compatibility where we may not have the correct client gdb bits on Windows for the remote target.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_debugmode_properties.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_debugmode_properties-500x201.png\" alt=\"Debugger mode project property\" width=\"500\" height=\"201\" class=\"aligncenter size-mediumlarge wp-image-10305\" \/><\/a><\/p>\n<p>You can also override the debugger command itself, this is useful for debugging external programs compiled outside of VS.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_debugprog_properties.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_debugprog_properties-500x142.png\" alt=\"Debug program project propery\" width=\"500\" height=\"142\" class=\"aligncenter size-mediumlarge wp-image-10315\" \/><\/a><\/p>\n<p>The Debugging Property Page has support now for additional gdb commands to be passed to the debugger to run when starting debugging. One example of where this can come in handy is Azure IoT projects. If you\u2019ve used the Azure IoT C SDK on the Raspberry Pi you may have run into seeing an illegal exception being thrown when you start debugging. This is caused by some interactions between libcrypto and gdb. You can find some discussion of this issue <a href=\"https:\/\/www.raspberrypi.org\/forums\/viewtopic.php?f=91&amp;t=117686\">here<\/a>. While debugging can continue you can avoid this error by passing an instruction to the debugger before it starts, in this case \u201chandle SIGILL nostop noprint\u201d.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_debugcmds_properties.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/9\/2019\/02\/linux_debugcmds_properties-500x199.png\" alt=\"Debug commands project property\" width=\"500\" height=\"199\" class=\"aligncenter size-mediumlarge wp-image-10295\" \/><\/a><\/p>\n<h2>We want to hear from you!<\/h2>\n<p>In addition to our support email alias, <a href=\"mailto:vcpplinux-support@microsoft.com\">vcpplinux-support<\/a>, <a href=\"https:\/\/github.com\/Microsoft\/VSLinux\/issues\/\">VC++ for Linux has a public issue list on GitHub<\/a>. This is a great option for having public discussion or reporting bugs. We have added our backlog for the extension here as well. You can see what we are targeting for a release by looking at the milestone tagged to an issue. There are a few we\u2019ve committed for 1.0.6 already.<\/p>\n<p>So please do follow our GitHub issue list and use it by either submitting feedback or +1 existing feedback there. We love hearing about how and where our extension is being used. Feel free to use our support email alias if you want to share that with us even if you don\u2019t have any issues. You can also find me on Twitter <a href=\"https:\/\/twitter.com\/robotdad\">@robotdad<\/a>.<\/p>\n<p>We look forward to hearing from you.<\/p>\n<h2>Change lists for release since last post<\/h2>\n<p>8\/19\/2016 v1.0.5<\/p>\n<ul>\n<li>Major performance improvements with incremental copy and build, and considerably reducing the number of connections<\/li>\n<li>Makefile project support for external build system support (make, CMake etc)<\/li>\n<li>Over ridable C\/C++ compiler path in Property Pages<\/li>\n<li>Remote source copy management per file\/project: no copy, and\/or override destination path<\/li>\n<li>Debug command override, useful for debugging external programs<\/li>\n<li>Pre-build and pre-link remote build events<\/li>\n<li>Arbitrary file copy as part of the build events<\/li>\n<li>Over ridable timeouts through project for command execution, compile, link and archiver.\n<ul>\n<li>Add elements to project file under &lt;PropertyGroup Label=Globals&gt; to override default value of 30 minutes. Values are:<\/li>\n<li>RemoteExecuteTimeout, RemoteCompileCommandTimeout, RemoteLdCommmandTimeout, or RemoteArCommmandTimeout<\/li>\n<\/ul>\n<\/li>\n<li>Debugging Property Page support for additional gdb commands for the debugger to run before starting debugging (debugger bootstrap commands)<\/li>\n<li>Linux console hang during infinite loops bug fix<\/li>\n<li>Default to IPv4 when using hostnames<\/li>\n<li>Custom local\/remote ports ignored bug fix<\/li>\n<li>Linker error parsing updates<\/li>\n<li>Fixed &#8220;&#8220;&#8221; escaping issue<\/li>\n<li>Connection manager uname -m, machine arch parsing bug fix<\/li>\n<li>Remote project directory is set to a system directory bug fix<\/li>\n<li>MIEngine bits moved up to Update 3<\/li>\n<\/ul>\n<p>7\/8\/2016 v1.0.4<\/p>\n<ul>\n<li>Bug fix for new source files in empty projects<\/li>\n<li>Added clean support<\/li>\n<li>Fixes bugs in remote target changes not triggering new build required<\/li>\n<li>Use first successful connection, instead of last successful, as the default connection<\/li>\n<li>General performance improvements<\/li>\n<li>Major IntelliSense fixes<\/li>\n<li>New experimenal debugging mode, gdb over the shell, which offers greater compatibility<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The Visual C++ for Linux announcement post has been updated with the content below. If you are already familiar with this extension this post covers what is new since our last update. We recently posted new bits for our 1.0.5 release of the Visual C++ for Linux extension for Visual Studio 2015. This release has [&hellip;]<\/p>\n","protected":false},"author":677,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[317,279],"tags":[],"class_list":["post-10365","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-iot","category-linux"],"acf":[],"blog_post_summary":"<p>The Visual C++ for Linux announcement post has been updated with the content below. If you are already familiar with this extension this post covers what is new since our last update. We recently posted new bits for our 1.0.5 release of the Visual C++ for Linux extension for Visual Studio 2015. This release has [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/10365","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/677"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=10365"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/10365\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=10365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=10365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=10365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}