C/C++ Properties (Linux C++)

Linux support is available in Visual Studio 2017 and later.

General

Property Description Choices
Additional Include Directories Specifies one or more directories to add to the include path. Use semi-colons to separate multiple directories. (-I[path]).
Debug Information Format Specifies the type of debugging information generated by the compiler. 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.
Object File Name Specifies a name to override the default object file name. It can be a file or directory name. (-o [name]).
Warning Level Selects how strict you want the compiler to be about code errors. Add other flags directly to Additional Options. (/w, /Weverything). Turn Off All Warnings - Disables all compiler warnings.
EnableAllWarnings - Enables all warnings, including ones disabled by default.
Treat Warnings As Errors Treats all compiler warnings as errors. For a new project, it may be best to use /Werror in all compilations. Resolve all warnings to ensure the fewest possible hard-to-find code defects.
C Additional Warnings Defines a set of additional warning messages.
C++ Additional Warnings Defines a set of additional warning messages.
Enable Verbose mode When Verbose mode is enabled, prints out more information to diagnose the build.
C Compiler Specifies the program to invoke during compilation of C source files, or the path to the C compiler on the remote system.
C++ Compiler Specifies the program to invoke during compilation of C++ source files, or the path to the C++ compiler on the remote system.
Compile Timeout Remote compilation timeout, in milliseconds.
Copy Object Files Specifies whether to copy the compiled object files from the remote system to the local machine.
Max Parallel Compilation Jobs The number of processes to create in parallel during compilation. The default is 1. If you're using Windows Subsystem for Linux (WSL) version 1, the limit is 64.
Validate Architecture Specify whether to check if the platform the project targets matches the remote system.
Enable Address Sanitizer Compile the program with Address Sanitizer, which is a fast memory error detector that can find runtime memory issues such as use-after-free, and perform out of bounds checks.

Optimization

Property Description Choices
Optimization Specifies the optimization level for the application. Custom - Custom optimization.
Disabled - Disable optimization.
Minimize Size - Optimize for size.
Maximize Speed - Optimize for speed.
Full Optimization - Expensive optimizations.
Strict Aliasing Assumes the strictest aliasing rules. An object of one type is never assumed to have the same address as an object of a different type.
Unroll Loops Unrolls loops to make the application faster by reducing the number of branches executed, at the cost of larger code size.
Link Time Optimization Enables inter-procedural optimizations by allowing the optimizer to look across object files in your application.
Omit Frame Pointer Suppresses creation of frame pointers on the call stack.
No Common Blocks Allocates even uninitialized global variables in the data section of the object file, rather than generate them as common blocks.

Preprocessor

Property Description
Preprocessor Definitions Defines preprocessing symbols for your source file. (-D)
Undefine Preprocessor Definitions Specifies one or more preprocessor undefines. (-U [macro])
Undefine All Preprocessor Definitions Undefines all previously defined preprocessor values. (-undef)
Show Includes Generates a list of include files with compiler output. (-H)

Code Generation

Property Description Choices
Position Independent Code Generates position-independent code (PIC) for use in a shared library.
Statics are thread safe Emits extra code to use routines specified in the C++ ABI for thread-safe initialization of local statics. No - Disable thread-safe statics.
Yes - Enable thread-safe statics.
Floating Point Optimization Enables floating-point optimizations by relaxing IEEE-754 conformance.
Inline Methods Hidden When enabled, out-of-line copies of inline methods are declared private extern.
Symbols Hidden By Default All symbols are declared private extern unless explicitly marked for export by using the __attribute macro.
Enable C++ Exceptions Specifies the exception-handling model used by the compiler. No - Disable exception handling.
Yes - Enable exception handling.

Language

Property Description 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.
C++ Language Standard 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.

Advanced

Property Description Choices
Compile As Selects compilation language option for .c and .cpp files. (-x c, -x c++) Default - Detect based on the .c or .cpp extension.
Compile as C Code - Compile as C code.
Compile as C++ Code - Compile as C++ code.
Forced Include Files Specifies one or more forced include files (-include [name])