Next: ede-simple-project, Previous: ede-project, Up: Project [Contents]

#### 8.7.3 ede-cpp-root-project

Inheritance Tree:
  `eieio-speedbar`
    `eieio-speedbar-directory-button`
      `See ede-project-placeholder.`
        `See ede-project.`
          `ede-cpp-root-project`

            No children

This class implements the `ede-cpp-root` project type. See ede-cpp-root, for information about using this project type.

Slots:
  `:include-path`

    Type: `list`
    Default Value: `(quote ("/include" "../include/"))`

    The default locate function expands filenames within a project. If a header file (.h, .hh, etc.) name is expanded, and the `:locate-fcn` slot is `nil`, then the include path is checked first, and other directories are ignored. For very large projects, this optimization can save a lot of time.

    Directory names in the path can be relative to the current buffer’s `default-directory` (not starting with a /). Directories that are relative to the project’s root should start with a /, such as "/include", meaning the directory `include` off the project root directory.

  `:system-include-path`

    Type: `list`
    Default Value: `nil`

    The system include path for files in this project. C files initialized in an ede-cpp-root-project have their semantic system include path set to this value. If this is `nil`, then the semantic path is not modified.

  `:spp-table`

    Type: `list`
    Default Value: `nil`

    C Preprocessor macros for your files. Preprocessor symbols will be used while parsing your files. These macros might be passed in through the command line compiler, or are critical symbols derived from header files. Providing header files macro values through this slot improves accuracy and performance. Use `:spp-files` to use these files directly.

  `:spp-files`

    Type: `list`
    Default Value: `nil`

    C header file with Preprocessor macros for your files. The PreProcessor symbols appearing in these files will be used while parsing files in this project. See `semantic-lex-c-preprocessor-symbol-map` for more on how this works.

  `:header-match-regexp`

    Type: `string`
    Default Value: `"\\.\\(h\\(h\\|xx\\|pp\\|\\+\\+\\)?\\|H\\)$\\|\\<\\w+$"`

    Regexp used to identify C/C++ header files.

  `:locate-fcn`

    Type: `(or null function)`
    Default Value: `nil`

    The locate function can be used in place of ede-expand-filename so you can quickly customize your custom target to use specialized local routines instead of the EDE routines. The function symbol must take two arguments: NAME - The name of the file to find. DIR - The directory root for this cpp-root project.

    It should return the fully qualified file name passed in from NAME. If that file does not exist, it should return `nil`.

#### 8.7.3.1 Specialized Methods

Method: initialize-instance :AFTER this &rest fields

  Make sure the `:file` is fully expanded.

Method: ede-preprocessor-map :AFTER this

  Get the pre-processor map for project THIS.

Method: ede-cpp-root-header-file-p :AFTER proj name

  Non `nil` if in PROJ the filename NAME is a header.

Method: ede-system-include-path :AFTER this

  Get the system include path used by project THIS.

Method: ede-expand-filename-impl :AFTER proj name

  Within this project PROJ, find the file NAME. This knows details about or source tree.

Next: ede-simple-project, Previous: ede-project, Up: Project [Contents]