{"id":147,"date":"2017-06-29T10:20:53","date_gmt":"2017-06-29T17:20:53","guid":{"rendered":"http:\/\/visualgdb.com\/w\/?p=147"},"modified":"2017-06-29T10:20:28","modified_gmt":"2017-06-29T17:20:28","slug":"linux-cmake","status":"publish","type":"post","link":"https:\/\/visualgdb.com\/tutorials\/linux\/cmake\/","title":{"rendered":"Creating CMake Linux projects with Visual Studio"},"content":{"rendered":"<p>This tutorial shows how to create, build and debug a simple CMake-based project with Visual Studio and use the Advanced CMake Project Subsystem to automatically update the CMakeLists.txt files when editing the project.<\/p>\n<p>Before you begin, make sure that <a href=\"\/download\">VisualGDB 5.3<\/a> or later is installed.<\/p>\n<ol>\n<li>Start Visual Studio and open the &#8220;New Project&#8221; dialog. Select the Linux Project Wizard from VisualGDB folder:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/01-newprj.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2850\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/01-newprj.png\" alt=\"01-newprj\" width=\"903\" height=\"604\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/01-newprj.png 903w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/01-newprj-300x201.png 300w\" sizes=\"(max-width: 903px) 100vw, 903px\" \/><\/a><\/li>\n<li>On the first wizard page ensure that &#8220;Create a new project&#8221; is selected and then select the &#8220;Use CMake&#8221; and check the &#8220;Use the advanced CMake Project Subsystem&#8221; checkbox:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/02-type.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2851\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/02-type.png\" alt=\"02-type\" width=\"822\" height=\"662\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/02-type.png 822w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/02-type-300x242.png 300w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/li>\n<li>On the next page select the Linux computer you want to target and press &#8220;Next&#8221;. If you have not configured the connection to that computer with VisualGDB yet, follow the <a href=\"\/tutorials\/linux\/\">generic Linux tutorial<\/a> to set it up.<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/03-machine.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2852\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/03-machine.png\" alt=\"03-machine\" width=\"822\" height=\"662\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/03-machine.png 822w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/03-machine-300x242.png 300w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a><\/li>\n<li>On the next page specify how should the Linux machine access the source code. The easiest way would be to proceed with the default settings of uploading the modified sources to the Linux machine:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/04-copy.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2853\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/04-copy.png\" alt=\"04-copy\" width=\"822\" height=\"662\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/04-copy.png 822w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/04-copy-300x242.png 300w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a>You can also configure VisualGDB to store the sources directly on the Linux machine and access them via SSH. Follow <a href=\"https:\/\/visualgdb.com\/tutorials\/linux\/directssh\/\">this tutorial<\/a> for more details.<\/li>\n<li>Once the project is created, press Ctrl-Shift-B to build your solution:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/05-project.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2854\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/05-project.png\" alt=\"05-project\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/05-project.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/05-project-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/05-project-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Set a breakpoint in main() and press F5 to ensure that you can debug the project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/06-debug.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2855\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/06-debug.png\" alt=\"06-debug\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/06-debug.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/06-debug-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/06-debug-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Now we will show how to manage project targets and edit various settings using the GUI. First we will create another executable target. Right-click on the .vgdbcmake node in Solution Explorer and select Add-&gt;New Item. Then pick &#8220;Executable&#8221; and add &#8220;\/subdir&#8221; to the location:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/07-anotherexe.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2856\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/07-anotherexe.png\" alt=\"07-anotherexe\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/07-anotherexe.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/07-anotherexe-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/07-anotherexe-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>VisualGDB will automatically create the &#8220;subdir&#8221; folder, put a CMakeLists.txt file there and reference it from the main CMakeLists file. Copy the contents of the main .cpp file to the new target&#8217;s file (optionally replacing the hello message) and build the project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/08-hello2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2857\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/08-hello2.png\" alt=\"08-hello2\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/08-hello2.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/08-hello2-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/08-hello2-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Add another source file to the new target:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/09-newsrc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2858\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/09-newsrc.png\" alt=\"09-newsrc\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/09-newsrc.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/09-newsrc-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/09-newsrc-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>This time add &#8220;subdir2&#8221; to the source file path:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/10-anothersource.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2859\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/10-anothersource.png\" alt=\"10-anothersource\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/10-anothersource.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/10-anothersource-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/10-anothersource-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Each CMake target under the VisualGDB CMake Project can have an independent set of properties. Debug-related properties like command-line arguments will be stored in the project file itself. Build-related properties like include directories will be automatically saved to CMakeLists.txt files. Open the VS Project Properties (alt-Enter) for the main target and set the command-line arguments to a non-empty value:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/11-args.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2860\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/11-args.png\" alt=\"11-args\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/11-args.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/11-args-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/11-args-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Right-click on the main target and select Debug-&gt;Start a new instance to begin debugging it:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/12-debug.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2861\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/12-debug.png\" alt=\"12-debug\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/12-debug.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/12-debug-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/12-debug-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>See how VisualGDB starts the selected target and how the command-line arguments match the ones set via Target Settings:\u00a0 <a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/13-debug.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2862\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/13-debug.png\" alt=\"13-debug\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/13-debug.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/13-debug-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/13-debug-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Open Visual Studio Properties for the project itself (.vgdbcmake node). You can use the settings in the &#8220;Sorting\/Grouping&#8221; category to control how VisualGDB groups the sources or targets. E.g. try setting the &#8220;Group Sources By Types&#8221; to &#8220;False&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/14-nogroup.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2863\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/14-nogroup.png\" alt=\"14-nogroup\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/14-nogroup.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/14-nogroup-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/14-nogroup-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>See how the &#8220;Source Files&#8221; nodes have disappeared and the sources are shown directly under the target nodes:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/nodirs1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2873\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/nodirs1.png\" alt=\"nodirs\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/nodirs1.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/nodirs1-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/nodirs1-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Now we will show how CMake handles subprojects. Open the CMakeLists.txt file from the subdirectory and add the following line there:\n<pre class=\"\">project(subproj)<\/pre>\n<p><a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2874\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj.png\" alt=\"subproj\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Save the CMakeLists file and look at the Solution Explorer. See how it now shows 2 project nodes, one for each project() statement:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2875\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj2.png\" alt=\"subproj2\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj2.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj2-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/subproj2-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>If a CMake project includes another project, CMake would normally report the targets of the included project (a.k.a. inner project) twice &#8211; once as a part of the including (a.k.a. outer) project and once as a part of the including project. As this is not very convenient, VisualGDB automatically hides redundant target instances. You can control how filtering works using the &#8220;Hide Redundant Targets&#8221; setting in the VS settings for the .vgdbcmake project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/16-hidemodes.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2865\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/16-hidemodes.png\" alt=\"16-hidemodes\" width=\"865\" height=\"450\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/16-hidemodes.png 865w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/16-hidemodes-300x156.png 300w\" sizes=\"(max-width: 865px) 100vw, 865px\" \/><\/a>If <strong>HideInnerProjectTargets<\/strong> is selected, all targets will be shown as if they were defined in the outer project (i.e. as if there were no nested project() statements). If <strong>HideOuterProjectTargets<\/strong> is selected, VisualGDB will show the targets inside the inner project nodes.<\/li>\n<li>Unlike MSBuild projects, CMake projects won&#8217;t automatically detect whether they are out-of-date unless you attempt an actual build, so trying to debug a project will always result in a prompt to build it:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/check.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2877\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/check.png\" alt=\"check\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/check.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/check-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/check-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>You can change this behavior by turning on the &#8220;Rely on CMake up-to-date Check&#8221; setting and reloading the project:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/17-uptodate.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2866\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/17-uptodate.png\" alt=\"17-uptodate\" width=\"822\" height=\"429\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/17-uptodate.png 822w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/17-uptodate-300x157.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/17-uptodate-390x205.png 390w\" sizes=\"(max-width: 822px) 100vw, 822px\" \/><\/a>However beware that CMake often mistakingly considers large projects outdated even if they aren&#8217;t, so this mechanism may not always work. You can use the View-&gt;Output-&gt;VisualGDB CMake Output pane to view the diagnostic output from CMake.<\/li>\n<li>If your CMake project contains multiple targets in multiple directories, you can limit the build to selected directories only by right-clicking on the target nodes and selecting &#8220;Build Target&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/18-buildtarget.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2867\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/18-buildtarget.png\" alt=\"18-buildtarget\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/18-buildtarget.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/18-buildtarget-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/18-buildtarget-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a>Note that if the same directory contains multiple targets, the &#8220;Build Target&#8221; command will build all targets in that directory.<\/li>\n<li>Now we will show how to edit the target properties. Open Visual Studio Project Properties for one of the targets and set the Warning Level to Pedantic:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/19-warnings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2868\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/19-warnings.png\" alt=\"19-warnings\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/19-warnings.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/19-warnings-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/19-warnings-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>See how VisualGDB automatically inserted the target_compile_options() statement into the corresponding CMakeLists file:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/20-edited.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2869\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/20-edited.png\" alt=\"20-edited\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/20-edited.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/20-edited-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/20-edited-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>Finally we will show how to configure various global settings for your VisualGDB CMake Project. Right-click on the project node and select &#8220;VisualGDB Project Properties&#8221;:<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/21-vgdbprops.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2870\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/21-vgdbprops.png\" alt=\"21-vgdbprops\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/21-vgdbprops.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/21-vgdbprops-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/21-vgdbprops-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<li>You can use the VisualGDB Project Properties window to configure various settings (e.g. IntelliSense, static code analysis or debug\/deployment settings):<a href=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/22-dbgsettings.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-2871\" src=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/22-dbgsettings.png\" alt=\"22-dbgsettings\" width=\"1129\" height=\"740\" srcset=\"https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/22-dbgsettings.png 1129w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/22-dbgsettings-300x197.png 300w, https:\/\/visualgdb.com\/w\/wp-content\/uploads\/2015\/05\/22-dbgsettings-1024x671.png 1024w\" sizes=\"(max-width: 1129px) 100vw, 1129px\" \/><\/a><\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial shows how to create, build and debug a simple CMake-based project with Visual Studio and use the Advanced<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[92],"tags":[77,33],"_links":{"self":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/147"}],"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=147"}],"version-history":[{"count":5,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/147\/revisions"}],"predecessor-version":[{"id":2880,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/posts\/147\/revisions\/2880"}],"wp:attachment":[{"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/media?parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/categories?post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/visualgdb.com\/w\/wp-json\/wp\/v2\/tags?post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}