# Discovery options preferences

Controls how to discover information required to build your project, enhance search and Content Assist functionality, and automatically enhance your makefile, such as include paths and symbol definitions.

Discovery options preferences
Configuration | Click here for a description.
Manage configurations | Click here for a description.

Discovery Profiles Scope

Specifies the type of profile to set for discovery:

- Per Language - Enables the association of different profiles with different resource types (different tools and input types), to have different settings discovered, e.g. for C and C++ source files and for different tools used by the project. In addition, selecting this option lets you have different profile settings for different folders; however, only project profile types are allowed.
- Configuration-wide - The Eclipse CDT uses only one profile for discovering scanner information for the entire project (configuration). This means that both the project and per-file discovery profiles are allowed.

Left pane list (language specific) | Shows a list of language specific compilers. Select a language from the list.
Automate discovery of paths and symbols | Scans the build output to populate the path and symbol tables, such as symbol definitions, system include directories, local include directories, macros, and include files.
Report path detection problems | Sets the notification of diagnostic errors for include paths that the Eclipse CDT is unable to resolve as it parses the build output.
Discovery profile | Indicates the discovery profile to use for paths and symbol detection. The type of Configuration and Discovery Profile Scope you specify determine what which Discovery Profile options display on this tab.
Enable build output scanner info discovery | Configures the scanner to parse the output from a build for compiler commands with options that specify the definition of preprocessor symbols, and include search paths (for GCC compiler, -D and -I respectively). This button is only visible when Configuration is set to Release and the Discovery Profiles Scope is set to Configuration-wide.
Load | Lets you load a file to discover paths and symbols based on a previous builds' output. To activate the discovery select a build log file and then the Load button. This button is only visible when Configuration is set to Release and the Discovery Profiles Scope is set to Configuration-wide. Note: Click Variables to open the Select Variables window to define a build output file.
Load build output from file | Specifies the name of the file you selected to load the build output from. This button is only visible when Configuration is set to Release and the Discovery Profiles Scope is set to Configuration-wide.
Browse | Click to locate a previously built output file to load the build output from. This button is only visible when Configuration is set to Release and the Discovery Profiles Scope is set to Configuration-wide.
Variables | Click to specify an argument for, or create and configure simple launch variables which you can reference in launch configurations that support variables. This button is only visible when Configuration is set to Release and the Discovery Profiles Scope is set to Configuration-wide.

Enable generate scanner info command

Enables the retrieval of information from the scanner. If it is not selected, the includes will be populated with default gcc system includes; Eclipse gathers the compiler settings based on the specified toolchain. This means that the Eclipse CDT can obtain the default gcc system includes to associate with the project.

When selected, you can specify any required compiler specific commands in the Compiler invocation command field.

Compiler invocation command

Indicates the compiler specific command used to invoke the compiler (such as `gcc`, or more complicated commands used to perform all necessary steps for compiling C/C++ source files into .o files, and linking the object files and libraries into an executable program. For example, the command gcc -E -P -v hello.c | hello.cpp reads a compiler's configuration file and prints out information that includes the compiler's internally defined preprocessor symbols and include search paths. The information is complementary to the scanner configuration discovered when the output is parsed (if you've enabled the Enable build output scanner info discovery option), and is added to the project's scanner configuration. You can click Browse to locate this command, if required.

Note: The parsing of build output for scanner information is compiler specific. For example, the GNU toolchain compilers (gcc and g++) use -I for include paths, and -D for symbol definitions. Consult your compiler specific documentation for more information about scanner information commands, such as the following gcc commands:

- `-D name`
- `-I`
- `-U name`
- `-I-`
- `-nostdinc`
- `-nostdinc++`
- `-include file`
- `-imacros file`
- `-idirafter dir`
- `-isystem dir`
- `-iprefix prefix`
- `-iwithprefix dir`
- `-iwithprefixbefore dir`

Browse | Click to browse for a file to include in the compiler invocation command. This button is only visible when Configuration is set to Release and the Discovery Profiles Scope is set to Configuration-wide.

- Build Project preferences, Macros
- Project Properties, Resource page
- Project Properties, Builders page
- Project Properties, C/C++ Build category
  - Discovery options page
  - Environment page
  - Settings page
    - Tool Settings tab
    - Build Steps tab
    - Build Artifact tab
    - Binary Parsers tab
    - Error Parsers tab
  - Tool chain editor page
  - Variables page
- Project Properties, C/C++ General category
  - Documentation page
  - File Types page
  - Indexer page
  - Language Mapping page
  - Paths and Symbols page
    - Includes tab
    - Symbols tab
    - Libraries path tab
    - Source Location tab
    - References tab
- C/C++ Project Properties, Project References page
- C/C++ Project Properties, Refactoring History page
- C/C++ Project Properties, Run/Debug Settings page