Project: Kepler Mac OS
Project: Kepler Mac OS
CDT allows for comfortable environment with code highlighting, navigation, content assist and static analysis. However, most C/C++ projects have to be configured to enjoy those features. Most real life C/C++ projects heavily depend on code outside of the project itself, such as system headers or third party libraries. CDT indexer needs to process those to provide accurate index. Failure to set up these important settings assuredly will cause the assist tools misbehave.
- Project: Kepler Mac Os Catalina
- Project: Kepler Mac Os Download
- Project: Kepler Mac Os 11
- Project: Kepler Mac Os X
CDT will try to discover include paths and preprocessor symbols automatically for supported tool chains. This process is known as Scanner Discovery or Autodiscovery. This discovery of symbols is twofold. One way, CDT will try to detect built-in compiler symbols and include paths running the compiler with special options and parse the output. Another method that CDT employs is to analyze build output of the regular build with Build Output Parser. Often, include paths are supplied to the compiler with -I options, and macros with -D options. That relies on verbose build output of your build where all these options are actually printed by make.
Scanner Discovery uses Language Settings Providers to find include paths and preprocessor symbols. Language Settings Providers can be configured on project properties page 'Preprocessor Include Paths, Macros, etc.', Providers tab for a configuration and on preference page C/C++ Preferences: Scanner Discovery for shared providers.
If information retrieved by auto-discovery is insufficient or the project deviates from a standard one supported by CDT a user can inspect discovered entries and enter additional include paths and macros manually on the property page 'Preprocessor Include Paths, Macros, etc.', Entries tab.
Explore the world of Mac. Check out MacBook Pro, MacBook Air, iMac, Mac mini, and more. Visit the Apple site to learn, buy, and get support. In the main tab set the project to be the suite you want to run, e.g., 'kepler', 'reporting', etc.' , and set the Main class: 'org.kepler.Kepler' See Developing a Hello World Actor using the Kepler Build System and Eclipse Detailed Instructions for Setting up Kepler under Eclipse. Well, my kepler GT 740 was definitely supported in OS X without any web drivers. It worked from 10.7.5 (in my xserve 1,1) and when I got my 3,1 MP I put it in there and it worked with HS, and was metal supported as well. Curious, not to thread jack or anything. But its on-topic so; Would a Kepler original GTX Titan work?
There are other ways to make C/C++ indexer aware of include paths or macros. One way is to set up them in MBS via 'Paths and Symbols' project properties. See Including paths and symbols in Managed Build System. These entries are supplied to the indexer with MBS Language Settings Provider.
Scanner Discovery
General
Scanner Discovery (sometimes called Autodiscovery) is a method of finding include paths and predefined preprocessor macros which the compiler uses during compilation of the code.
Even a simplest C/C++ program just printing 'Hello World' needs to include system headers. Consider:
Indexer needs to be able to find headers stdio.h and stdlib.h and parse them to provide accurate index. In this example, the headers define prototype of function puts and macro EXIT_SUCCESS.
CDT will try to discover include paths and preprocessor symbols automatically for supported tool chains. There are 2 main ways to discover those:
- Built-in Settings. CDT will try to detect built-in compiler symbols and include paths running the compiler with special options and parse the output of this special run. Most compilers provide such an option to print built-in include paths and symbols. Built-in settings are implied and do not get passed to compiler during regular compilation.
- Build Output Parser (BOP). Another method that CDT employs is to analyze build output of the regular build with Build Output Parser. Often, include paths are supplied to the compiler with -I options, and macros with -D options and BOP will try to find those in the output. That method relies on verbose build output of your build where all these options are actually printed by make.
CDT uses Language Settings Providers to discover the settings (starting with version CDT 8.1). Typically Language settings Providers are specialized. One will provide built-in compiler settings and another one settings detected by Build output Parser. There is also an extension point defined in CDT to allow third party Eclipse plugins to contribute custom Language Settings Providers.
The setting entries found by Scanner Discovery can be inspected in project properties on 'Preprocessor Include Paths, Macros etc.' page. Each Language Settings Provider can be expanded to show the entries it discovered.
If information retrieved by auto-discovery is insufficient or the project deviates from a standard one supported by CDT a user can enter additional include paths and macros manually under 'User Settings Entries'.
Project Explorer View
The Project Explorer View provides a means to view some of the settings. The discovered include paths are shown under the project when 'Includes' node is expanded.
Also, a 'Wrench' overlay icon is shown for those file/folders where distinct entries are discovered which differ from those of parent folder. Wrench is not shown on project level.
In the example below, Hello.cpp was compiled with added -DHELLO compiler option. After BOP discovery 'Wrench' overlay is shown for this file.
Console View
The output of built-in compiler specs detectors can be inspected to troubleshoot problems running the command. To do so, enable checkbox 'Allocate console in the Console View'.
When checkbox 'Allocate console in the Console View' is enabled, output of each run of the provider will be directed to a special console in the Console View.
C/C++ Project properties: Preprocessor Include Paths, Macros, etc.
Include paths and preprocessor macros for C/C++ indexer and other Language Settings are supplied by Language Settings Providers using Scanner Discovery mechanism.
The entries can be inspected and set up on project properties page 'Preprocessor Include Paths, Macros, etc.' - Entries tab.
Language Settings Providers can be set up and configured for the selected configuration on project properties page 'Preprocessor Include Paths, Macros, etc.' - Providers tab.
C/C++ Project properties: Preprocessor Include Paths, Macros, etc. - Entries tab
Include paths and preprocessor macros for C/C++ indexer can be inspected and set up on the project property page 'Preprocessor Include Paths, Macros, etc.', 'Entries' tab. This tab presents Language Settings Providers employed by Scanner Discovery to provide include paths, macros and other Language Settings.
Note that the entries could be set also on an individual resource, such as file or folder. Open file or folder properties to inspect resource-specific entries. The entries on a folder or a project will apply to all subfolders and C/C++ files under it - unless overridden on a lower level.
'Entries' tab shows a list of Language Settings Providers for each language. A provider node can be expanded to show include paths and macros defined by the provider. A user can add custom entries here under 'User Setting Entries' provider.
Entries tab controls
Group | Description |
---|---|
Configuration | Click here for a description |
Manage Configurations... | Click here for a description |
Languages | Lists all of the languages defined by the tool chain. Select a language to see the list of applicable providers. |
Setting Entries | Lists all of the providers for the selected language and entries supplied by them. Expand a provider node to see the entries. |
Show built-in values | Disable checkbox 'Show built-in values' to filter out built-in setting entries in the view. Built-in compiler entries need to be provided to C/C++ indexer but not to the compiler during the build. |
Add... | Add an entry to the provider. Enabled only when the provider supports the operation. |
Edit... | Edit the selected settings entry. Enabled only when the provider supports the operation. |
Delete | Delete the selected settings entry. Enabled only when the provider supports the operation. |
Move Up | Moves the selected entry higher in the list. Enabled only when the provider supports the operation. |
Move Down | Moves the selected entry lower in the list. Enabled only when the provider supports the operation. |
Adding and Editing entries
Use Add... and Edit... buttons to add or modify the entries. Both buttons open similar dialog described here.
Add/Edit entries dialog
Group | Description |
---|---|
Kind of Setting Entry | A dropbox to select desired kind of setting entry. This dropbox is not available in 'Edit' mode. |
Kind of path | A dropbox to select desired kind of path. This dropbox is shown for path entries only. |
Path | Enter path value of the entry. This field is shown for path entries only. |
Open folder button | Use folder button to navigate folder structure to select existing path. The provided dialog varies depending on the kind of path selected in the corresponding dropbox. This button is shown for path entries only. |
Variables | Select one of the build or environment variables provided by CDT to embed into 'Path' field. This button is enabled only for File System Paths. |
Treat as built-in | Enable this checkbox to mark the entry as built-in. Built-in compiler entries need to be provided to C/C++ indexer but not to the compiler during the build. |
Contains system headers | Enable if the include path is a system directory which contains system headers. This checkbox is shown for Include Directories only. |
Framework folder | Mac OS has a unique way of specifying include directories for Frameworks. Enable if the included directory is Mac Framework directory. This checkbox is shown for Include Directories only. |
Name | Shown for Preprocessor Macro only. Specify the macro name here. |
Value | Shown for Preprocessor Macro only. Specify the macro name here. |
C/C++ Project properties: Preprocessor Include Paths, Macros, etc. - Providers tab
Include paths and preprocessor macros for C/C++ indexer and other Language Settings are supplied by Language Settings Providers as part of Scanner Discovery. Language Settings Providers can be set up and configured for the selected configuration in the 'Providers' tab.
'Providers' tab is only shown in properties of a project, not in properties of a file or a folder.
Providers tab controls
Group | Description |
---|---|
Configuration | Click here for a description |
Manage Configurations... | Click here for a description |
Language | Lists all of the providers available for the current configuration. |
Setting Providers List | Select the providers to assign to the configuration. |
Clear Entries | Clears all entries of the selected provider. This operation takes effect after pressing 'Apply' or 'OK'. Normally this will trigger a rerun if the provider supplies built-in compiler settings. Build output parsers will regain language settings after build while parsing new build output. This operation might be unavailable if the provider does not have any language settings. Some providers may not have the capability to clear. On this property page, this operation is applicable only to non-shared providers. |
Reset | Resets options of the selected provider to default values. This operation also clears the provider entries. The button can be enabled if some options in 'Language Settings Provider Options' panel were changed. In this dialog, this operation is applicable only to non-shared providers. |
Move Up | Moves the selected provider higher in the list. |
Move Down | Moves the selected provider lower in the list. |
A user can define some options for configuration providers (or 'non-shared') on this property page. Note that providers can be either shared or defined per configuration. Options of global (or 'shared') providers can be configured on C/C++ Preferences: Scanner Discovery.
There are 2 specific options that are added for non-shared providers defined per configuration. They are described in the table below.
Discovery tab
Group | Description |
---|---|
Use global provider shared between projects | Providers can be global or belong to a configuration. Global providers share their entries between all configurations which refer to them. |
Store entries in project settings folder | Providers can persist their entries in workspace or under project folder. Storing entries under project when approprate can make sharing with the other team members easier. |
The rest of the options is described in C/C++ Preferences: Scanner Discovery, under Language Settings Providers Options.
Scanner Discovery Preferences
General
Use the Discovery Tab on Build preference panel to define global scanner discovery options.
In the Discovery tab you can see a list of Language Settings Providers. Language Settings Providers supply Language Settings such as include paths and preprocessor macros for the indexer and other components of CDT.
A user can define some properties for global (or 'shared') providers on this preference. Note that providers can be either shared or defined per configuration. Properties for non-shared providers can be defined in Project properties: Preprocessor Include Paths, Macros, etc.
Discovery tab
Group | Description |
---|---|
Language Settings Providers | Lists the available language settings providers. |
Clear Entries | Click to clear all entries of the selected provider. This operation takes effect after pressing 'Apply' or 'OK'. Normally this will trigger a rerun if the provider supplies built-in compiler settings. Build output parsers will regain language settings after build while parsing new build output. This operation might be unavailable if the provider does not have any language settings. Some providers may not have the capability to clear. |
Reset | Click to reset options of the selected provider to default values. This operation also clears the provider entries. The button can be enabled if some options in 'Language Settings Provider Options' panel were changed. |
Kinds of Language Settings Providers
Provider | Description |
---|---|
Build Output Parser Provider | Build Output Parser Provider parses output of build looking for include paths and macros passed to the compiler via compiler options. Include files, macro files passed the the compiler and some other compiler options are normally also recognized. For gcc, include paths commonly passed with '-I' option and macros with '-D' option. The language settings found by BOP are available after the build is finished. |
Built-in Compiler Settings Provider | Built-in Compiler Settings Provider launches the compiler with special options that instruct the compiler to print built-in settings such as include paths to internal system headers and the list of internally predefined macros. This provider is usually shared between projects in workspace and runs in background once. When it is finished the language settings are available to all the projects between which it is shared. |
Managed Build Language Settings Provider | MBS Provider supplies language settings provided by Managed Build System. |
User Language Settings Provider | A user has an opportunity to enter language settings manually using this provider. User Language Settings Provider should be normally the first in the list so these settings override settings supplied by other providers. |
Contributed PathEntry Containers | This provider is here for backward compatibility support of PathEntry Containers from older versions of CDT. Using this method is not recommended. |
Contributed ScannerInfo Entries | This provider is here for backward compatibility support of ScannerInfo Entries from older versions of CDT. Using this method is not recommended. |
Language Settings Providers Options
Language settings providers can have options that affect the behavior of a provider. These options are presented in 'Language Settings Provider Options' panel.
Build Output Parser Options
Build Output Parser Options
Provider | Options |
---|---|
Compiler command pattern | The pattern which is used to recognize compiler command in build output. Note that the pattern is Java regular expression pattern, it is NOT globing pattern used to expand file name in command line. |
Container to keep discovered entries | The discovered entries can be associated with the project, enclosing folder or the file itself. |
Use heuristics to resolve paths | The provider will try to find the best match for the discovered path in the project or workspace trying several heuristics. If disabled, the discovered paths will stay as they appear in build output. |
Built-in Compiler Settings Provider Options
Builtin Compiler Settings Provider Options
Provider | Options |
---|---|
Command to get compiler specs | The command to make the compiler print built-in settings. Following variables are recognized:
|
Browse | Use this button to locate the compiler on the file system. The result is put into 'Command to get compiler specs' input field. |
Allocate console in the Console View | Enable to troubleshoot problems running the command. When enabled, output of each run of the provider will be directed to a special console in the Console View. See also Scanner Discovery - Console View. |
To see the entries a provider discovered, go to project properties (or the properties of the resource of interest), see Project properties: Preprocessor Include Paths, Macros, etc.
A hint: After compiler upgrade re-discover changed settings with 'Clear Entries' of the appropriate provider.
References
The material provided in this article is also available with Eclipse Kepler C/C++ Development User Guide in Scanner Discovery section.
About the Authors
Do you have a question, comment or suggestion to pass along to the Kepler team? Please contact us via one of our email lists, report a bug, peruse the development areas of the website and the forums, or join the Kepler developers on IRC. As a community we appreciate your input and do our best to respond promptly.
Post to or read our mailing lists:
If you have questions or comments related to using Kepler, please subscribe to the kepler-users (see archives) mailing list. This list is intended mainly as a support channel. A searchable copy of the archives is here: http://www.mail-archive.com/kepler-users@kepler-project.org/
Subscribe to this low volume, moderated list to receive Kepler-related announcements, such as releases and news items.
Report a bug:
The Kepler project uses Redmine for reporting bugs as well as for sharing future development plans. To participate in future plans, report bugs, and receive progress updates, please register here for an account.
Developer's Forums and Email lists
Development activities are organized through the Kepler Infrastructure Teams, Development Teams, and Interest Groups. These groups of collaborating Kepler contributors use the Kepler Developers' web site to organize their development activities and the Kepler development forums to discuss design and development issues for the project.In addition, individuals can join the Kepler-dev (see archives) mailing list to interact with the rest of the development team. This list is for technical discussions of how to build and extend Kepler itself. Usage questions should be directed to the kepler-users list. A searchable version of the mail archive is available here: http://www.mail-archive.com/kepler-dev@kepler-project.org/
Join the developers on IRC:
Many of the Kepler developers use IRC to chat on a daily basis. We use the '#kepler' channel on irc.ecoinformatics.org:6667 for our discussions. To use IRC:
1. Download and install an IRC client. Some popular clients for Mac OS, Windows and Linux include:
Project: Kepler Mac Os Catalina
Colloquy (Mac OS)
2. Connect to the IRC host: irc.ecoinformatics.org
Project: Kepler Mac Os Download
3. Once you have connected to the server, you need to connect to a 'channel', which represents a discussion room. The discussions for kepler occurs in the channel '#kepler', so you would use the command /join #kepler to enter the Kepler discussion. We do use other channels as well, so be sure to use IRC's /list command to find out which channels exist and are active when you connect. Note that you can be 'in' more than one channel at a time, and most clients show this as separate windows.
Once you are connected, you might find some of the following commands are also useful from time to time:
/nick newName Changes your nickname.
Project: Kepler Mac Os 11
/query nick Opens a private discussion with someone.
/list Displays a list of all channels on the server.
Project: Kepler Mac Os X
/topic newTopic Changes the channel topic.
Project: Kepler Mac OS