Download, Install and Setup the Linux Development Workload Create a New Linux Project Configure a Linux Project Configure a Linux CMake Project

Similar documents
Using Visual Studio and VS Code for Embedded C/C++ Development. Marc Goodner, Principal Program Manager, Microsoft

CMPT 300. Operating Systems. Brief Intro to UNIX and C

Lab 1: First Steps in C++ - Eclipse

Programs. Function main. C Refresher. CSCI 4061 Introduction to Operating Systems

Arguments of C++ Applications g++ options Libraries

Reviewing gcc, make, gdb, and Linux Editors 1

Hello, World! in C. Johann Myrkraverk Oskarsson October 23, The Quintessential Example Program 1. I Printing Text 2. II The Main Function 3

Embedded Systems Programming

CodeWarrior Development Studio for Power Architecture Processors FAQ Guide

Module 3: Working with C/C++

Red Hat Developer Tools

FX SERIES. Programmer s Guide. Embedded SDK. MN000540A01 Rev. A

Laboratory Assignment #3 Eclipse CDT

Laboratory Assignment #4 Debugging in Eclipse CDT 1

Building an Android* command-line application using the NDK build tools

Red Hat Developer Tools

Lab4 Embedded Linux. Introduction

Laboratorio di Programmazione. Prof. Marco Bertini

Test/Debug Guide. Reference Pages. Test/Debug Guide. Site Map Index

NSIGHT ECLIPSE EDITION

CS201 - Introduction to Programming Glossary By

Laboratorio di Programmazione. Prof. Marco Bertini

Beyond this course. Machine code. Readings: CP:AMA 2.1, 15.4

NSIGHT ECLIPSE EDITION

Lecture 10: building large projects, beginning C++, C++ and structs

Laboratory 1 Semester 1 11/12

HOW TO USE CODE::BLOCKS IDE FOR COMPUTER PROGRAMMING LABORATORY SESSIONS

Continuous Integration INRIA

CSX600 Runtime Software. User Guide

ROS Qt Creator Plug-in. Release

Short Notes of CS201

TUTORIAL: Quickstart with freediameter

PathFinder-XD for MIPS Powered Devices. Simulator

BUILDING TESTING DEBUGGING PACKAGING BUILDING OOREXX

Saleae Device SDK Starting a Device SDK Project on Windows Starting a Device SDK Project on Linux... 7

DS-5 ARM. Getting Started with DS-5. Version 5.6. Copyright 2010, 2011 ARM. All rights reserved. ARM DUI 0478F (ID071411)

This document contains information about the ElectricAccelerator Solution Support Add-in. Topics include: Overview 2. New Features and Improvements 2

Setting up my Dev Environment ECS 030

manifold Documentation

TangeloHub Documentation

CS354 gdb Tutorial Written by Chris Feilbach

MPLAB XC8 C Compiler Version 2.00 Release Notes for AVR MCU


Introduction to C/C++ Programming

Check the Desktop development with C++ in the install options. You may want to take 15 minutes to try the Hello World C++ tutorial:

WRITING CONSOLE APPLICATIONS IN C

CMPSC 311- Introduction to Systems Programming Module: Build Processing

C Compilation Model. Comp-206 : Introduction to Software Systems Lecture 9. Alexandre Denault Computer Science McGill University Fall 2006

CSci 4061 Introduction to Operating Systems. Programs in C/Unix

Exercise 1: Basic Tools

Software Development With Emacs: The Edit-Compile-Debug Cycle

ENERGY 211 / CME 211. Evolution

Creating a Project Using an Existing Build System

TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform

Tool for Analysing and Checking MPI Applications

Introduction. Key features and lab exercises to familiarize new users to the Visual environment

A Tutorial for ECE 175

RVDS 4.0 Introductory Tutorial

15-323/ Spring 2019 Project 4. Real-Time Audio Processing Due: April 2 Last updated: 6 March 2019

Have examined process Creating program Have developed program Written in C Source code

FEAP - - A Finite Element Analysis Program

7 Cmicro Targeting. Tutorial. Chapter

CodeWarrior Development Studio for Advanced Packet Processing FAQ Guide

CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco

DS-5 ARM. Using Eclipse. Version Copyright ARM. All rights reserved. ARM DUI 0480L (ID100912)

EL2310 Scientific Programming

Setting up a Chaincoin Masternode

CSE 351. GDB Introduction

Source level debugging. October 18, 2016

2 ABOUT VISUALDSP++ In This Chapter. Figure 2-0. Table 2-0. Listing 2-0.

Lab6 GDB debugging. Conventions. Department of Computer Science and Information Engineering National Taiwan University

RVDS 3.0 Introductory Tutorial

GDB Tutorial. A Walkthrough with Examples. CMSC Spring Last modified March 22, GDB Tutorial

INSTALLING INSTALLING INSTALLING

Department of Computer Science and Engineering Yonghong Yan

6L00IA - Introduction to Synergy Software Package Short Version (SSP v1.2.0) Renesas Synergy Family - S7 Series

The Linux Programming Environment. Computer Science Department Texas State University

Relarium (RLM) Masternode Guide for VPS

Debugging (Part 1) The material for this lecture is drawn, in part, from The Practice of Programming (Kernighan & Pike) Chapter 5

PRINCIPLES OF OPERATING SYSTEMS

Using a debugger. Segmentation fault? GDB to the rescue!

QNX Software Development Platform 6.6. Quickstart Guide

Optional Eclipse Workspace Configurations

μc/probe on the element14 BeagleBone Black

Git. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes

LTC Data Converter Board For The Arrow SoCKit Linux Application User s Guide

Eli System Administration Guide

Dalhousie University CSCI 2132 Software Development Winter 2018 Lab 8, March 22

CST8152 Compilers Creating a C Language Console Project with Microsoft Visual Studio.Net 2010

2 COMPILER. Overview. Figure 2-0. Table 2-0. Listing 2-0.

How to cross compile with LLVM based tools. Peter Smith, Linaro

Dixicoin (DXC) Masternode Guide for VPS

INTRODUCTION...2 REQUIREMENTS...2 INSTALLATION...2 DISTRIBUTION...2 SAMPLE APPLICATION...3 FUNCTION: WinsockRCP...4

ROS - LESSON 2. Curso Development environment setup. ROS packages structure. ROS Integration with Eclipse. Writing your first Node

SwanSim - A Guide to Git / SourceTree / GitLab for Windows

Code::Blocks Student Manual

CS 220: Introduction to Parallel Computing. Beginning C. Lecture 2

INTERMEDIATE SOFTWARE DESIGN SPRING 2011 ACCESS SPECIFIER: SOURCE FILE

COBOL-IT Developer Studio Getting Started The Debugger Perspective Version 2.0

Module 4: Working with MPI

Transcription:

Table of Contents Download, Install and Setup the Linux Development Workload Create a New Linux Project Configure a Linux Project Configure a Linux CMake Project Connect to Your Remote Linux Computer Deploy, Run, and Debug Your Linux Project Linux Project Property Page Reference General Properties (Linux) Debugging Properties (Linux) VC++ Directories Properties (Linux) Copy Sources Properties (Linux) C/C++ Properties (Linux) Linker Properties (Linux) Build Event Properties (Linux) Custom Build Step Properties (Linux) Makefile Project Properties (Linux)

Download, install, and setup the Linux workload 12/21/2017 1 min to read Edit Online Visual Studio setup 1. Start the Visual Studio installer and select the Linux development with C++ workload. 2. Click Install to continue with the installation. Linux setup The target Linux computer must have openssh-server, g++, gdb, and gdbserver installed, and the ssh daemon must be running. If these are not already present, you can install them as follows: 1. At a shell prompt on your Linux computer, run: sudo apt-get install openssh-server g++ gdb gdbserver You may be prompted for your root password due to the sudo command. If so, enter it and continue. Once complete, these services and tools will be installed. 2. Ensure the ssh service is running on your Linux computer by running: sudo service ssh start This will start the service and run it in the background, ready to accept connections.

Create a New Linux Project 12/21/2017 1 min to read Edit Online When coding for Linux, you have the choice of creating a Visual Studio project, or a CMake project. This topic describes how to create a Visual Studio project. For information about CMake Projects, see Configure a Linux CMake Project. To create a new Linux project in Visual Studio, do the following: 1. Select File > New Project in Visual Studio, or press Ctrl + Shift + N. 2. Select the Visual C++ > Cross Platform > Linux node and then select the project type you would like to create, enter a Name/Location, and click OK. PROJECT TYPE Blink (Raspberry) Console Application (Linux) Empty Project (Linux) Makefile Project (Linux) Project targeted for a Raspberry Pi device with sample code written to blink an LED Project targeted for any Linux computer with sample code written to output text to the console Project targeted for any Linux computer with no sample code written Project targeted for any Linux computer which will be built using a standard Makefile build system

Configure a Linux Project 12/21/2017 3 min to read Edit Online This topic describes how to configure a Visual Studio Linux project. For information about CMake Linux Projects, see Configure a Linux CMake Project. General settings A variety of options can be configured for a Linux project with Visual Studio. To view these options, select the Project > Properties menu, or right click on the project in Solution Explorer and select Properties from the context menu. The General settings appear. By default, an executable (.out) is built with the tool. To build a static or dynamic library, or to use an existing Makefile, use the Configuration Type selection. Remote settings To change settings pertaining to the remote Linux computer, configure the remote options that appear in the General settings: To change the target Linux computer, use the Remote Build Machine entry. This will allow you to select one of the connections created previously. To create a new entry, please see the Connecting to Your Remote Linux Computer section. The Remote Build Root Directory determines the root location of where the project is built on the remote Linux computer. This will default to ~/projects unless changed. The Remote Build Project Directory is where this specific project will be built on the remote Linux computer. This will default to $(RemoteRootDir)/$(ProjectName), which will expand to a directory named after the current project, under the root directory set above. NOTE To change the default C and C++ compilers, or the Linker and Archiver used to build the project, use the appropriate entries in the C/C++ > General section and the Linker > General section. These could be set to use a certain version of GCC, or even the Clang compiler, for example. VC++ directories By default, Visual Studio does not include any system-level include files from the Linux computer. For example, items in the /usr/include directory are not present in Visual Studio. For full IntelliSense support, you will need to copy those files to some location on your development computer and point Visual Studio to this location. One option is to use scp (Secure Copy) to copy the files. On Windows 10, you can use Bash on Windows to run scp. For previous versions of Windows, you could use something like PSCP (PuTTY Secure Copy). You can copy the files by using a command similar to the following: scp -r linux_username@remote_host:/usr/include. Of course, replace the linux_username and remote_host values above for what's appropriate in your own environment. Once the files are copied, use the VC++ Directories item in Project properties to tell Visual Studio where to find the additional include files that were just copied.

Copy sources When building, the source files on your development PC are copied to the Linux computer and compiled there. By default, all sources in the Visual Studio project are copied to the locations set in the settings above. However, additional sources can also be added to the list, or copying sources can be turned off entirely, which is the default for a Makefile project. Sources to copy determines which sources are copied to the remote computer. By default, the @(SourcesToCopyRemotely) defaults to all source code files in the project, but does not include any asset/resource files, such as images. Copy sources can be turned on and off to enable and disable the copying of source files to the remote computer. Additional sources to copy allows you to add additional source files which will be copied to the remote system. You can specify a semi-colon delimited list, or you can use the := syntax to specify a local and remote name to use: C:\Projects\ConsoleApplication1\MyFile.cpp:=~/projects/ConsoleApplication1/ADifferentName.cpp;C:\Projects\ConsoleApplication1\MyFile2.cpp:=~/projects/ConsoleApplication1/ADifferentName Build events Since all compilation is happening on a remote computer, several additional Build Events have been added to the Build Events section in Project Properties. These are Remote Pre-Build Event, Remote Pre-Link Event, and Remote Post-Build Event, and will occur on the remote computer before or after the individual steps in the process. See Also Working with Project Properties C++ General Properties (Linux C++) VC++ Directories (Linux C++) Copy Sources Project Properties (Linux C++) Build Event Properties (Linux C++)

Configure a Linux CMake project 12/21/2017 3 min to read Edit Online Visual Studio 2017 version 15.4 When you install the Linux C++ workload, CMake support for Linux is selected by default. You can now work on your existing code base that uses CMake without having to convert it to a Visual Studio project. If your code base is cross-platform, you can target both Windows and Linux from within Visual Studio. This topic assumes you have basic familiarity with CMake support in Visual Studio. For more information, see CMake Tools for Visual C++. For more information about CMake itself, see Build, Test and Package Your Software With CMake. NOTE The CMake support in Visual Studio requires the server mode support that was introduced in CMake 3.8. If your package manager provides an older version of CMake, you can work around it by building CMake 3.8 from source. Open a folder To get started, choose File Open Folder from the main menu or else type devenv.exe <foldername> on the command line. The folder you open should have a CMakeLists.txt file in it, along with your source code. The following example shows a simple CMakeLists.txt file and.cpp file: // Hello.cpp #include <iostream>; int main(int argc, char* argv[]) { std::cout << "Hello" << std::endl; } CMakeLists.txt: project (hello-cmake) add_executable(hello-cmake hello.cpp) Choose a Linux target As soon as you open the folder, Visual Studio parses the CMakeLists.txt file and specifies a Windows target of x86- Debug. To target Linux, change the project settings to Linux-Debug or Linux-Release. By default, Visual Studio chooses the first remote system in the list (under Tools Options Cross Platform Connection Manager). If no remote connections are found, you are prompted to create one. After you specify a Linux target, your source is copied to your Linux machine. Then, CMake is run on the Linux machine to generate the CMake cache for your project.

Debug the project To debug your code on the remote system, set a breakpoint, select the CMake target as the startup item in the toolbar menu next to the project setting, and click run (or press F5). Configure CMake Settings for Linux To change the default CMake settings, choose CMake Change CMake Settings CMakeLists.txt from the main menu, or right-click CMakeSettings.txt in Solution Explorer and choose Change CMake Settings. Visual Studio then creates a new file in your folder called CMakeSettings.json that is populated with the default configurations that are listed in the project settings menu item. The following example shows the default configuration for Linux- Debug based on the previous code example: { } "name": "Linux-Debug", "generator": "Unix Makefiles", "remotemachinename": "${defaultremotemachinename}", "configurationtype": "Debug", "remotecmakelistsroot": "/var/tmp/src/${workspacehash}/${name}", "cmakeexecutable": "/usr/local/bin/cmake", "buildroot": "${env.localappdata}\\cmakebuilds\\${workspacehash}\\build\\${name}", "remotebuildroot": "/var/tmp/build/${workspacehash}/build/${name}", "remotecopysources": true, "remotecopysourcesoutputverbosity": "Normal", "remotecopysourcesconcurrentcopies": "10", "cmakecommandargs": "", "buildcommandargs": "", "ctestcommandargs": "", "inheritenvironments": [ "linux-x64" ]

The name value can be whatever you like. The remotemachinename value specifies which remote system to target, in case you have more than one. IntelliSense is enabled for this field to help you select the right system. The field remotecmakelistsroot specifies where your project sources will be copied to on the remote system. The field remotebuildroot is where the build output will be generated on your remote system. That output is also copied locally to the location specified by buildroot. Building a supported CMake release from source The minimum version of CMake required on your Linux machine is 3.8, and it must also support server mode. To verify this run this command: cmake --version To verify that server mode is enabled, run: cmake -E capabilities In the output, look for servermode :true. Note that even when you compile CMake from source as described below you should check the capabilities when done. Your Linux system may have limitations that prevent server mode from being enabled. To get started building from source in the shell for your Linux system make sure your package manager is up to date, and that you have git and cmake available. First, clone the CMake sources: sudo apt-get update sudo apt-get install -y git cmake git clone https://github.com/kitware/cmake.git cd CMake Next, make sure you are on a supported release of CMake for Visual Studio. We are actively tracking CMake development, but we cannot guarantee we support the latest. To build CMake 3.9.0 (for example), first run: git checkout tags/v3.9.0 Next, run the following commands: mkdir out cd out cmake../ make sudo make install The above commands build and install the current release of CMake to /usr/local/bin. Run this command to verify the version is >= 3.8 and that server mode is enabled: /usr/local/bin/cmake version cmake -E capabilities See Also Working with Project Properties CMake Tools for Visual C++

Connect to Your remote Linux computer 12/21/2017 1 min to read Edit Online When building, Linux code is copied to your remote Linux computer and then compiled on that system according to the settings chosen in Visual Studio. To setup this remote connection: 1. Build the project for the first time or manually create a new entry by selecting Tools > Options and then open the Cross Platform > Connection Manager node and click the Add button. In either scenario, the Connect to Remote System window will be displayed.

2. Enter the following information: ENTRY Host Name Name or IP address of your target device Port Port that the SSH service is running on, typically 22 User name Authentication type Password Private key file Passphrase User to authenticate as Password or Private Key are both supported Password for the entered user name Private key created for ssh connection Passphrase used with private key selected above 3. Click the Connect button to attempt a connection to the remote computer. If the connection fails, the entry boxes which need to be changed will be outlined in red.

Deploy, run, and debug your Linux project 1/31/2018 2 min to read Edit Online Once you have created a Linux project and you have connected to the project using the Linux Connection Manager, you can run and debug the project. You compile, execute, and debug the code on the remote target. There are several ways to interact with and debug your Linux project. Debug using traditional Visual Studio features, such as breakpoints, watch windows, and hovering over a variable. Using these methods, you may debug as you normally would for other project types. View output from the target computer in a special Linux Console window. You can also use the console to send input to the target computer. NOTE For ARM debugging on Linux, see this blog post: Debugging an embedded ARM device in Visual Studio. Debug your Linux project 1. Select debugging mode in the Debugging property page. GDB is used to debug applications running on Linux. However, this can run in two different modes, which can be selected from the Debugging Mode option in the project's Debugging property page: In gdbserver mode, GDB is run locally which connects to gdbserver running on the remote system. Note that this is the only mode which the Linux Console window supports. In gdb mode, the Visual Studio debugger drives GDB on the remote system, which is more

compatible if the local version of GDB is not compatible with the version installed on the target computer. NOTE If you are unable to hit breakpoints in gdbserver debugging mode, try gdb mode. gdb must first be installed on the remote target. 2. Select the remote target using the standard Debug toolbar in Visual Studio. When the remote target is available, you will see it listed by either name or IP address. If you have not yet connected to the remote target, you will see an instruction to use Linux Connection Manager to connect to the remote target. 3. Set a breakpoint by clicking in the left gutter of some code that you know will execute. A red dot appears on the line of code where you set the breakpoint. 4. Press F5 (or Debug > Start Debugging) to start debugging. When you start debugging, the application is compiled on the remote target before it starts. Any compilation errors will appear in the Error List window. If there are no errors, the app will start and the debugger will pause at the breakpoint. Now, you can interact with the application in it's current state, view variables, and step through code by pressing command keys such as F10 or F11. 5. If you want to use the Linux Console to interact with your app, select Debug > Linux Console.

This console will display any console output from the target computer as well as take input and send it to the target computer. Configure other debugging options Command line arguments can be passed to the executable using the Program Arguments item in the project's Debugging property page.

Specific debugger options can be passed to GDB using the Additional Debugger Commands entry. For example, you might want to ignore SIGILL (illegal instruction) signals. You could use the handle command to achieve this. by adding the following to the Additional Debugger Commands entry as shown above: handle SIGILL nostop noprint See also C++ Debugging Properties (Linux C++).

Linux Project Property Page Reference 12/21/2017 1 min to read Edit Online This section contains reference content for property pages in a Visual C++ Linux project. General Properties (Linux) Debugging Properties (Linux) VC++ Directories Properties (Linux) Copy Sources Properties (Linux) C/C++ Properties (Linux) Linker Properties (Linux) Build Event Properties (Linux) Custom Build Step Properties (Linux) Makefile Project Properties (Linux)

General Properties (Linux C++) 1/3/2018 1 min to read Edit Online PROPERTY CHOICES Output Directory Intermediate Directory Target Name Target Extension Extensions to Delete on Clean Build Log File Platform Toolset Remote Build Machine Remote Build Root Directory Remote Build Project Directory Configuration Type Use of STL Specifies a relative path to the output file directory; can include environment variables. Specifies a relative path to the intermediate file directory; can include environment variables. Specifies a file name that this project will generate. Specifies a file extension that this project will generate. (Example:.a) Semi-colon delimited wildcard specification for which files in the intermediate directory to delete on clean or rebuild. Specifies the build log file to write to when build logging is enabled. Specifies the toolset used for building the current configuration; If not set, the default toolset is used The target machine or device to use for remote build, deploy and debug. Specifies a path to a directory on the remote machine or device. Specifies a path to a directory on the remote machine or device for the project. Specifies the type of output this configuration generates. Specifies which C++ Standard Library to use for this configuration. Dynamic Library (.so) - Dynamic Library (.so) Static library (.a) - Static Library (.a) Application (.out) - Application (.out) Makefile - Makefile Shared GNU Standard C++ Library Static GNU Standard C++ Library (- static)

C++ Debugging Properties (Linux C++) 1/3/2018 1 min to read Edit Online PROPERTY CHOICES Pre-Launch Command Program Program Arguments Working Directory Additional Debugger Commands Debugger Port Number Remote Debugger Port Number Debugging Mode Additional Symbol Search Paths A command that is run on the shell before the debugging starts and before the debugger is running, and can be used to affect the debugging environment. The full path to the program to debug on the remote system. This is a path on the remote system. If left empty or unchanged it defaults to the current project output. The command line arguments to pass to the program being debugged. The remote application's working directory. By default, the user home directory. Additional gdb commands for the debugger to run before starting debugging. The port number for debugger communication with the remote debugger. The port must not be in use locally. This value must be positive in between 1 and 65535. If not supplied a free port number will be used. The port number on which the remote debugger server (gdbserver) is listening on on the remote system. The port must not be in use on the remote system. This value must be positive in between 1 and 65535. If not supplied a free port number starting from 4444 will be used. Specifies how the debugger interfaces with gdb. In the gdb mode the debugger drives gdb over the shell on the remote system. In the gdbserver mode, gdb is running locally and connects to gdbserver running remotely. Additional search path for debug symbols (solib-search-path). gdbserver gdb

PROPERTY CHOICES Debug Child Processes Enable Python Pretty Printing Visualization File Additional Sources File Path Map Specifies whether to enable debugging of child processes. Enable pretty printing of expression values. Only supported in gdb debugging mode. Default native visualization file (.natvis) containing visualization directives for SLT types. Other.natvis files that belong to the current solution will be loaded automatically. Additional path equivalences for the debugger to use to map Windows source file names to Linux source file names. The format is "<windowspath>=<linux-path>;...". A source file name found under the Windows path will be referenced as if is has been found in the same relative position under the Linux path. Files found in the local project do not require additional mapping.

VC++ Directories (Linux C++) 1/3/2018 1 min to read Edit Online PROPERTY Include Directories Library Directories Source Directories Exclude Directories Path to use when searching for include files while building a VC++ project. Corresponds to environment variable INCLUDE. Path to use when searching for library files while building a VC++ project. Corresponds to environment variable LIB. Path to use when searching for source files to use for Intellisense. Path to skip when searching for scan dependencies.

Copy Sources Project Properties (Linux C++) 1/3/2018 1 min to read Edit Online The properties set on this property page apply to all files in the project except whose file-level properties are set. PROPERTY Sources To Copy Copy Sources Additional Sources To Copy Specifies the sources to copy to the remote system. Changing this list might shift or otherwise affect the directory structure where files are copied to on the remote system. Specifies whether to copy the sources to the remote system. Specifies additional sources to copy to the remote system. Optionally the list can be provided as a local to remote mapping pairs using a syntax like this: fulllocalpath1:=fullremotepath1;fulllocalpath2:=fullremotepath 2, where a local file can be copied to the specified remote location on the remote system.

C/C++ Properties (Linux C++) 12/21/2017 3 min to read Edit Online General PROPERTY CHOICES Additional Include Directories Debug Information Format Object File Name Warning Level Treat Warnings As Errors C Additional Warnings C++ Additional Warnings Enable Verbose mode C Compiler C++ Compiler Specifies one or more directories to add to the include path; separate with semicolons if more than one. (-I[path]). Specifies the type of debugging information generated by the compiler. Specifies a name to override the default object file name; can be file or directory name. (-o [name]). Select how strict you want the compiler to be about code errors. Other flags should be added directly to Additional Options. (/w, /Weverything). Treats all compiler warnings as errors. For a new project, it may be best to use /Werror in all compilations; resolving all warnings will ensure the fewest possible hard-to-find code defects. Defines a set of additional warning messages. Defines a set of additional warning messages. When Verbose mode is enabled, this tool would print out more information that for diagnosing the build. Specifies the program to invoke during compilation of C source files, or the path to the C compiler on the remote system. Specifies the program to invoke during compilation of C++ source files, or the path to the C++ compiler on the remote system. None - Produces no debugging information, so compilation may be faster. Minimal Debug Information - Generate minimal debug information. Full Debug Information (DWARF2) - Generate DWARF2 debug information. Turn Off All Warnings - Disables all compiler warnings. EnableAllWarnings - Enables all warnings, including those disabled by default.

PROPERTY CHOICES Compile Timeout Copy Object Files Remote compilation timeout, in milliseconds. Specifies whether to copy the compiled object files from the remote system to the local machine. Optimization PROPERTY CHOICES Optimization Strict Aliasing Unroll Loops Link Time Optimization Omit Frame Pointer No Common Blocks Preprocessor Specifies the optimization level for the application. Assume the strictest aliasing rules. An object of one type will never be assumed to reside at the same address as an object of a different type. Unroll loops to make application faster by reducing number of branches executed at the cost of larger code size. Enable Inter-Procedural optimizations by allowing the optimizer to look across object files in your application. Suppresses creation of frame pointers on the call stack. Allocate even unintialized global variables in the data section of the object file, rather then generating them as common blocks Custom - Custom optimization. Disabled - Disable optimization. Minimize Size - Optimize for size. Maximize Speed - Optimize for speed. Full Optimization - Expensive optimizations. PROPERTY CHOICES Preprocessor Definitions Undefine Preprocessor Definitions Undefine All Preprocessor Definitions Defines a preprocessing symbols for your source file. (-D) Specifies one or more preprocessor undefines. (-U [macro]) Undefine all previously defined preprocessor values. (-undef)

PROPERTY CHOICES Show Includes Generates a list of include files with compiler output. (-H) Code Generation PROPERTY CHOICES Position Independent Code Statics are thread safe Floating Point Optimization Inline Methods Hidden Symbol Hiddens By Default Enable C++ Exceptions Language Generate Position Independent Code (PIC) for use in a shared library. Emit Extra code to use routines specified in C++ ABI for thread safe initilization of local statics. Enables floating point optimizations by relaxing IEEE-754 compliance. When enabled, out-of-line copies of inline methods are declared 'private extern'. All symbols are declared 'private extern' unless explicitly marked to be exported using the ' attribute' macro. Specifies the model of exception handling to be used by the compiler. No - Disable thread safe statics. Yes - Enable thread safe statics. No - Disable exception handling. Yes - Enable exception handling. PROPERTY CHOICES Enable Run-Time Type Information Adds code for checking C++ object types at run time (runtime type information). (frtti, fno-rtti) C Language Standard Determines the C language standard. Default C89 - C89 Language Standard. C99 - C99 Language Standard. C11 - C11 Language Standard. C99 (GNU Dialect) - C99 (GNU Dialect) Language Standard. C11 (GNU Dialect) - C11 (GNU Dialect) Language Standard.

PROPERTY CHOICES C++ Language Standard Advanced Determines the C++ language standard. Default C++03 - C++03 Language Standard. C++11 - C++11 Language Standard. C++14 - C++14 Language Standard. C++03 (GNU Dialect) - C++03 (GNU Dialect) Language Standard. C++11 (GNU Dialect) - C++11 (GNU Dialect) Language Standard. C++14 (GNU Dialect) - C++14 (GNU Dialect) Language Standard. PROPERTY CHOICES Compile As Select compile language option for.c and.cpp files. 'Default' will detect based on.c or.cpp extention. (-x c, -x c++) Default - Default. Compile as C Code - Compile as C Code. Compile as C++ Code - Compile as C++ Code. Forced Include Files One or more forced include files (- include [name]) Additional Options

Linker Properties (Linux C++) 1/3/2018 2 min to read Edit Online General PROPERTY CHOICES Output File Show Progress Version Enable Verbose Output Trace Trace Symbols Print Map Report Unresolved Symbol References Optimize For Memory Usage Shared Library Search Path Additional Library Directories Linker Link Timeout Copy Output The option overrides the default name and location of the program that the linker creates. (-o) Prints Linker Progress Messages. The -version option tells the linker to put a version number in the header of the executable. The -verbose option tells the linker to output verbose messages for debugging. The --trace option tells the linker to output the input files as are processed. Print the list of files in which a symbol appears. (--trace-symbol=symbol) The --print-map option tells the linker to output a link map. This option when enabled will report unresolved symbol references. Optimize for memory usage, by rereading the symbol tables as necessary. Allows the user to populate the shared library search path. (-rpath-link=path) Allows the user to override the environmental library path. (-L folder). Specifies the program to invoke during linking, or the path to the linker on the remote system. Remote linking timeout, in milliseconds. Specifies whether to copy the build output file from the remote system to the local machine.

Input PROPERTY CHOICES Ignore Specific Default Libraries Ignore Default Libraries Force Undefined Symbol References Library Dependencies Additional Dependencies Specifies one or more names of default libraries to ignore. (--exclude-libs lib,lib) Ignore default libraries and only search libraries explicitely specified. Force symbol to be entered in the output file as an undefined symbol. (-u symbol --undefined=symbol) This option allows specifying additional libraries to be added to the linker command line. The additional library will be added to the end of the linker command line prefixed with 'lib' and end with the '.a' extension. (-lfile) Specifies additional items to add to the link command line. Debugging PROPERTY CHOICES Debugger Symbol Information Map File Name Advanced Debugger symbol information from the output file. The Map option tells the linker to create a map file with the user specified name. (-Map=) Include All Omit Debugger Symbol Information Only Omit All Symbol Information PROPERTY CHOICES Mark Variables ReadOnly After Relocation Enable Immediate Function Binding Do Not Require Executable Stack Whole Archive This option marks variables read-only after relocation. This option marks object for immediate function binding. This option marks output as not requiring executable stack. Whole Archive uses all code from Sources and Additional Dependencies.

Build Event Properties (Linux C++) 1/3/2018 2 min to read Edit Online Pre-Build Event PROPERTY Command Line Description Use In Build Additional files to copy Specifies a command line for the pre-build event tool to run. Specifies a description for the pre-build event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy to the remote system. Optionally the list can be provided as a local to remote mapping pairs using a syntax like this: fulllocalpath1:=fullremotepath1;fulllocalpath2:=fullremotepath 2, where a local file can be copied to the specified remote location on the remote system. Pre-Link Event PROPERTY Command Line Description Use In Build Additional files to copy Specifies a command line for the pre-link event tool to run. Specifies a description for the pre-link event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy to the remote system. Optionally the list can be provided as a local to remote mapping pairs using a syntax like this: fulllocalpath1:=fullremotepath1;fulllocalpath2:=fullremotepath 2, where a local file can be copied to the specified remote location on the remote system. Post-Build Event PROPERTY Command Line Description Use In Build Specifies a command line for the post-build event tool to run. Specifies a description for the post-build event tool to display. Specifies whether this build event is excluded from the build for the current configuration.

PROPERTY Additional files to copy Specifies additional files to copy to the remote system. Optionally the list can be provided as a local to remote mapping pairs using a syntax like this: fulllocalpath1:=fullremotepath1;fulllocalpath2:=fullremotepath 2, where a local file can be copied to the specified remote location on the remote system. Remote Pre-Build Event PROPERTY Command Line Description Use In Build Additional files to copy Specifies a command line for the pre-build event tool to run on the remote system. Specifies a description for the pre-build event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy from the remote system. Optionally the list can be provided as a remote to local mapping pairs using a syntax like this: fullremotepath1:=fulllocalpath1;fullremotepath2:=fulllocalpath 2, where a remote file can be copied to the specified location on the local machine. Remote Pre-Link Event PROPERTY Command Line Description Use In Build Additional files to copy Specifies a command line for the pre-link event tool to run on the remote system. Specifies a description for the pre-link event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy from the remote system. Optionally the list can be provided as a remote to local mapping pairs using a syntax like this: fullremotepath1:=fulllocalpath1;fullremotepath2:=fulllocalpath 2, where a remote file can be copied to the specified location on the local machine. Remote Post-Build Event PROPERTY Command Line Specifies a command line for the post-build event tool to run on the remote system.

PROPERTY Description Use In Build Additional files to copy Specifies a description for the post-build event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy from the remote system. Optionally the list can be provided as a remote to local mapping pairs using a syntax like this: fullremotepath1:=fulllocalpath1;fullremotepath2:=fulllocalpath 2, where a remote file can be copied to the specified location on the local machine.

Custom Build Step Properties (Linux C++) 1/3/2018 1 min to read Edit Online PROPERTY Command Line Description Outputs Additional Dependencies Execute After and Execute Before Treat Output As Content The command to be executed by the custom build step. A message that's displayed when the custom build step runs. The output file that the custom build step generates. This setting is required so that incremental builds work correctly. A semicolon-delimited list of any additional input files to use for the custom build step. These options define when the custom build step is run in the build process, relative to the listed targets. The most commonly listed targets are BuildGenerateSources, BuildCompile, and BuildLink, because they represent the major steps in the build process. Other often-listed targets are Midl, CLCompile, and Link. This option is only meaningful for Windows Store or Windows Phone apps, which include all content files in the.appx package.

Makefile Project Properties (Linux C++) 1/3/2018 3 min to read Edit Online This is a partial list of the properties available in a Linux Makefile project. Many Makefile project properties are identical to the Linux C++ Console Application project properties. General PROPERTY CHOICES Output Directory Intermediate Directory Build Log File Configuration Type Remote Build Machine Remote Build Root Directory Remote Build Project Directory Specifies a relative path to the output file directory; can include environment variables. Specifies a relative path to the intermediate file directory; can include environment variables. Specifies the build log file to write to when build logging is enabled. Specifies the type of output this configuration generates. The target machine or device to use for remote build, deploy and debug. Specifies a path to a directory on the remote machine or device. Specifies a path to a directory on the remote machine or device for the project. Dynamic Library (.so) - Dynamic Library (.so) Static library (.a) - Static Library (.a) Application (.out) - Application (.out) Makefile - Makefile Debugging See Debugger Properties (Linux C++) Copy Sources See Copy Sources Project Properties (Linux C++). Build Events Pre-Build Event

PROPERTY Command Line Description Use In Build Additional files to copy Specifies a command line for the pre-build event tool to run. Specifies a description for the pre-build event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy to the remote system. Optionally the list can be provided as a local to remote mapping pairs using a syntax like this: fulllocalpath1:=fullremotepath1;fulllocalpath2:=fullremotepath 2, where a local file can be copied to the specified remote location on the remote system. Post-Build Event PROPERTY Command Line Description Use In Build Additional files to copy Specifies a command line for the post-build event tool to run. Specifies a description for the post-build event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy to the remote system. Optionally the list can be provided as a local to remote mapping pairs using a syntax like this: fulllocalpath1:=fullremotepath1;fulllocalpath2:=fullremotepath 2, where a local file can be copied to the specified remote location on the remote system. Remote Pre-Build Event PROPERTY Command Line Description Use In Build Additional files to copy Specifies a command line for the pre-build event tool to run on the remote system. Specifies a description for the pre-build event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy from the remote system. Optionally the list can be provided as a remote to local mapping pairs using a syntax like this: fullremotepath1:=fulllocalpath1;fullremotepath2:=fulllocalpath 2, where a remote file can be copied to the specified location on the local machine. Remote Post-Build Event

PROPERTY Command Line Description Use In Build Additional files to copy Specifies a command line for the post-build event tool to run on the remote system. Specifies a description for the post-build event tool to display. Specifies whether this build event is excluded from the build for the current configuration. Specifies additional files to copy from the remote system. Optionally the list can be provided as a remote to local mapping pairs using a syntax like this: fullremotepath1:=fulllocalpath1;fullremotepath2:=fulllocalpath 2, where a remote file can be copied to the specified location on the local machine. C/C++ IntelliSense The IntelliSense properties can be set at the project or file level to provide clues to the IntelliSense engine. They do not affect compilation. PROPERTY Include Search Path Forced Includes Preprocessor Definitions Undefine Preprocessor Definitions Additional Options Specifies the include search path for resolving included files. Specifies the files that are forced included. Specifies the preprocessor defines used by the source files. Specifies one or more preprocessor undefines. (/U[macro]) Specifies additional compiler switches to be used by Intellisense when parsing C++ files. Build PROPERTY Build Command Line Rebuild All Command Line Clean Command Line Specifies the command line to run for the 'Build' command. Specifies the command line to run for the 'Rebuild All' command. Specifies the command line to run for the 'Clean' command. Remote Build PROPERTY Build Command Line Specifies the command line to run for the 'Build' command. This is executed on the remote system.

PROPERTY Rebuild All Command Line Clean Command Line Outputs Specifies the command line to run for the 'Rebuild All' command. This is executed on the remote system. Specifies the command line to run for the 'Clean' command. This is executed on the remote system. Specifies the outputs generated by the remote build on the remote system.