Difference between revisions of "Configuring C Projects"

From AtlasWiki
Jump to: navigation, search
(Configuring C projects for Atlas)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Atlas for C is still in beta and may require some setup.  Please refer to the following steps for configuring C projects properly.  In the future, this process will be streamlined.
 
  
<br>
+
In order to map your C code, Atlas needs the same settings that the compiler needs to build your project.  The following guide explains common ways to import an existing C code base into an [http://www.eclipse.org/cdt/ Eclipse CDT] project, and to prepare it for mapping with Atlas.
<u>Importing C projects in Eclipse</u>
+
<br>
+
If the project requires a special compiler (other than gcc), you may need to install additional CDT features.  In particular, if your project requires a gcc-based cross compiler, you may need to install the CDT feature "C/C++ GCC Cross Compiler Support".
  
#Import, if the project has a Makefile:
+
==Importing C projects in Eclipse==
#*Right-click in the package explorer.
+
*If the project has a Makefile:
#*Select '''Import'''.
+
**From the '''File''' menu, select '''Import'''.
#*In the popup dialogue, expand '''C/C++''', select '''Existing Code as Makefile Project''', and click '''Next'''.
+
**In the popup dialogue, expand '''C/C++''', select '''Existing Code as Makefile Project''', and click '''Next'''.
#*Enter a project name and indicate the directory to import.
+
**Enter a project name and indicate the directory to import.  Set the '''Toolchain for Indexer Settings'''.  For cross compilation with gcc, select '''Cross GCC'''.
#*Click '''Finish'''.
+
**Click '''Finish'''.
#Import, if the project does NOT have a Makefile:
+
*If the project does NOT have a Makefile:
#*Right-click in the package explorer.
+
**From the '''File''' menu, select '''New''', then '''Other…''' .
#*Select '''New > Project…'''
+
**In the popup dialogue, expand '''C/C++''', select '''C Project''', and click '''Next'''.
#*In the popup dialogue, select '''General > Project''' and click '''Next'''.
+
**Expand the Project type '''Executable''', and click '''Empty Project'''.
#*Enter a project name and click '''Finish'''.
+
**Enter a project name and click '''Finish'''.
#*Right-click on the project and select '''Import'''.
+
**Right-click on the project and select '''Import'''.
#*Enter the parent directory, select files to import, and click '''Finish'''.
+
**In the popup dialogue, expand '''General''', select '''File System''', and click '''Next'''.
 +
**Enter the parent directory, select files to import, and click '''Finish'''.
 +
**Make adjustments to the include paths and preprocessor directives as needed.  Right-click on the project, folders, or files, and select '''Properties'''.
 +
**In the popup dialog, expand '''C/C++ Build''' and select '''Settings'''.  Add include paths and preprocessor directives as needed.  See also: [http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.cdt.doc.user%2Freference%2Fcdt_u_prop_build_settings_tool.htm CDT Help].
 +
 +
==Configuring C projects for Atlas==
 +
'''At this point, your C project may be already configured correctly.'''  In order for Atlas to obtain compiler settings (such as include paths and preprocessor directives), the CDT must be able to build your C project and observe invocations of your compiler.  Review the steps below to ensure that Atlas can extract compiler information from the build process.
 +
 
 +
If your project uses a gcc-based cross compiler, configure the project to use it (instructions adapted from [http://stackoverflow.com/questions/27180771/how-to-configure-a-particular-gcc-cross-toolchain-in-eclipse-cdt stackoverflow.com]).
 +
*Right-click on the project and select '''Properties'''.
 +
*Ensure the project is configured to use the Cross GCC Tool Chain.
 +
**Expand '''C/C++ Build''' and select '''Tool Chain Editor'''.
 +
**Set the '''Current toolchain''' to '''Cross GCC'''.
 +
**Click '''Apply'''.
 +
*In the popup dialog, select '''C/C++ Build'''.
 +
**Check '''Generate Makefiles automatically''', but do NOT Apply.
 +
*Under '''C/C++ Build''', select '''Settings'''.
 +
*Under the '''Tool Settings''' tab, select '''Cross Settings'''.  Set the cross compiler settings for '''Prefix''' and '''Path'''.  For example:
 +
**Prefix: arm-none-eabi-
 +
**Path: /usr/bin
 +
*Select '''C/C++ Build''' again, uncheck '''Generate Makefiles automatically'''.
 +
*Click '''Apply'''.
 +
 
 +
The steps below detail the changes necessary to accurately map the files built by the Makefile.
 +
*Ensure that the CDT can observe invocations of your compiler during a build.  Makefiles for large projects (such as Linux) suppress the full text of the invocation for readability, but there is usually a way to emit the invocations in verbose mode.
 +
**Select '''C/C++ Build''' and uncheck '''"Use default build command"'''.  Adjust the command to make the output verbose.  Common options include “make V=1” or “make VERBOSE=1”.
 +
*Configure Atlas to observe the build:
 +
**Right-click on the project and select '''Properties'''.
 +
**Select '''Atlas C Build'''.
 +
**Under '''Build Commands''', add the name of the compiler used by the project.  Atlas will look for invocations of these compilers when parsing the output of the project's build.
 +
**Under '''Source files to map''', select '''Map only files in current build'''.
 +
**Click '''OK'''.
 +
 
 +
==Build==
 +
*To accurately map the project, it must be built so that the compiler invocations can be observed.
 +
**If your project uses a CDT-generated Makefile, or the Makefile has an “all” target
 +
*Right-click on the project in the '''Project Explorer''' and select '''Build Project'''
 +
**If your project has a hand-written Makefile
 +
**Right-click on the project in the '''Project Explorer''' and expand '''Build Targets''' and select '''Create…''' .
 +
**In '''Target name''', enter the name of the build target.  Click '''OK'''.
 +
**In the '''Project Explorer''' view, expand the project, expand the '''Build Targets''', and double-click on the target.
 +
 
 +
==Map==
 +
*After the project has been successfully built, it can be mapped with Atlas.
 +
**Right-click on the project in the '''Project Explorer''', expand Atlas, and select '''Enable Mapping'''.
 +
**Select '''Atlas''' from the main menu, and select '''Re-Map Workspace'''.
 +
 +
==Troubleshooting==
 +
If Atlas is unable to properly map the project, try the following:
 +
*Clean and build the project and make sure the build output is being correctly parsed:
 +
**Right-click on the project in the package explorer and select '''Properties'''.
 +
**Look under '''Atlas C Build > Build Configuration File'''.
 +
**If the '''Open''' button under '''Build Configuration File''' is grayed out, or if it says zero files were found, then Atlas was unable to detect the build configuration. Select '''C/C++ Build''' and uncheck '''“Use default build command”'''.
 +
**Adjust the command to make the output verbose. Necessary flags may vary; common options include “V=1” or “VERBOSE=1”.
 +
**Clean and build the project.  Check that '''Build Configuration File''' is nonzero.
 +
*If Atlas’ code map is still empty, it may be that the Makefile is improperly reporting changing directories.
 +
**Right-click on the project in the package explorer and select '''Properties'''.
 +
**Select '''C/C++ Build''' and uncheck “Use default build command”.
 +
**Add the flag “--print-directory”.
 +
**Clean and build the project.
  
<br>
 
<u>Setting up C projects for Atlas</u>
 
<br>
 
  
#Enable the Atlas Error Parser:
 
#*Right-click on the project in the package explorer and select '''Properties'''.
 
#*Under '''Atlas C/C++ Build''', click the button '''Enable Atlas Error Parser''' (if it is not grayed out already) and click '''OK'''.
 
#Add the compiler build command:
 
#*Right-click on the project in the package explorer and select '''Properties'''.
 
#* Under '''Atlas C/C++ Build''', add the compiler command to the '''Build Commands'''. These are the commands that will be parsed from the output of the project's makefile.
 
#Choose the project to be indexed:
 
#*Open the '''Atlas''' menu and select '''Manage Project Settings'''.
 
#*Select the project to be indexed, click the '''Add''' button, and click '''OK'''.
 
#*An index can be run by selecting '''Index Workspace''' under the '''Atlas''' menu.
 
  
 
<br>
 
<br>
<u>Troubleshooting</u>:  If Atlas is unable to properly index the project, try the following fixes:
+
For versions of Atlas before Atlas 3.0, see the instructions at [[Configuring C Projects for Atlas 2.0]].
<br>
+
 
+
#Clean and build the project and make sure the build output is being correctly parsed:
+
#*Right-click on the project in the package explorer and select '''Properties'''.
+
#*Look under Atlas '''C/C++ Build > Build Configuration File'''.
+
#*If the Open button under Build Configuration File is grayed out, or if it says zero files were found, then Atlas was unable to detect the build configuration. Select '''C/C++ Build''' and uncheck “Use default build command”.
+
#*Adjust the command to make the output verbose.  Necessary flags may vary; common options include “V=1” or “VERBOSE=1”.
+
#*Clean and build the project and check that Build Configuration File is nonzero.
+
#If Atlas’ index is still empty, it may be that the Makefile is improperly reporting changing directories.
+
#*Right-click on the project in the package explorer and select '''Properties'''.
+
#*Select '''C/C++ Build''' and uncheck “Use default build command”.
+
#*Add the flag “--print-directory”.
+
#*Clean and build the project.
+
  
 
<br>
 
<br>
 
If you experience difficulty in setting up Atlas, please contact [mailto:[email protected] [email protected]] for assistance.
 
If you experience difficulty in setting up Atlas, please contact [mailto:[email protected] [email protected]] for assistance.

Latest revision as of 15:32, 13 April 2018

In order to map your C code, Atlas needs the same settings that the compiler needs to build your project. The following guide explains common ways to import an existing C code base into an Eclipse CDT project, and to prepare it for mapping with Atlas.

If the project requires a special compiler (other than gcc), you may need to install additional CDT features. In particular, if your project requires a gcc-based cross compiler, you may need to install the CDT feature "C/C++ GCC Cross Compiler Support".

Importing C projects in Eclipse

  • If the project has a Makefile:
    • From the File menu, select Import.
    • In the popup dialogue, expand C/C++, select Existing Code as Makefile Project, and click Next.
    • Enter a project name and indicate the directory to import. Set the Toolchain for Indexer Settings. For cross compilation with gcc, select Cross GCC.
    • Click Finish.
  • If the project does NOT have a Makefile:
    • From the File menu, select New, then Other… .
    • In the popup dialogue, expand C/C++, select C Project, and click Next.
    • Expand the Project type Executable, and click Empty Project.
    • Enter a project name and click Finish.
    • Right-click on the project and select Import.
    • In the popup dialogue, expand General, select File System, and click Next.
    • Enter the parent directory, select files to import, and click Finish.
    • Make adjustments to the include paths and preprocessor directives as needed. Right-click on the project, folders, or files, and select Properties.
    • In the popup dialog, expand C/C++ Build and select Settings. Add include paths and preprocessor directives as needed. See also: CDT Help.

Configuring C projects for Atlas

At this point, your C project may be already configured correctly. In order for Atlas to obtain compiler settings (such as include paths and preprocessor directives), the CDT must be able to build your C project and observe invocations of your compiler. Review the steps below to ensure that Atlas can extract compiler information from the build process.

If your project uses a gcc-based cross compiler, configure the project to use it (instructions adapted from stackoverflow.com).

  • Right-click on the project and select Properties.
  • Ensure the project is configured to use the Cross GCC Tool Chain.
    • Expand C/C++ Build and select Tool Chain Editor.
    • Set the Current toolchain to Cross GCC.
    • Click Apply.
  • In the popup dialog, select C/C++ Build.
    • Check Generate Makefiles automatically, but do NOT Apply.
  • Under C/C++ Build, select Settings.
  • Under the Tool Settings tab, select Cross Settings. Set the cross compiler settings for Prefix and Path. For example:
    • Prefix: arm-none-eabi-
    • Path: /usr/bin
  • Select C/C++ Build again, uncheck Generate Makefiles automatically.
  • Click Apply.

The steps below detail the changes necessary to accurately map the files built by the Makefile.

  • Ensure that the CDT can observe invocations of your compiler during a build. Makefiles for large projects (such as Linux) suppress the full text of the invocation for readability, but there is usually a way to emit the invocations in verbose mode.
    • Select C/C++ Build and uncheck "Use default build command". Adjust the command to make the output verbose. Common options include “make V=1” or “make VERBOSE=1”.
  • Configure Atlas to observe the build:
    • Right-click on the project and select Properties.
    • Select Atlas C Build.
    • Under Build Commands, add the name of the compiler used by the project. Atlas will look for invocations of these compilers when parsing the output of the project's build.
    • Under Source files to map, select Map only files in current build.
    • Click OK.

Build

  • To accurately map the project, it must be built so that the compiler invocations can be observed.
    • If your project uses a CDT-generated Makefile, or the Makefile has an “all” target
  • Right-click on the project in the Project Explorer and select Build Project
    • If your project has a hand-written Makefile
    • Right-click on the project in the Project Explorer and expand Build Targets and select Create… .
    • In Target name, enter the name of the build target. Click OK.
    • In the Project Explorer view, expand the project, expand the Build Targets, and double-click on the target.

Map

  • After the project has been successfully built, it can be mapped with Atlas.
    • Right-click on the project in the Project Explorer, expand Atlas, and select Enable Mapping.
    • Select Atlas from the main menu, and select Re-Map Workspace.

Troubleshooting

If Atlas is unable to properly map the project, try the following:

  • Clean and build the project and make sure the build output is being correctly parsed:
    • Right-click on the project in the package explorer and select Properties.
    • Look under Atlas C Build > Build Configuration File.
    • If the Open button under Build Configuration File is grayed out, or if it says zero files were found, then Atlas was unable to detect the build configuration. Select C/C++ Build and uncheck “Use default build command”.
    • Adjust the command to make the output verbose. Necessary flags may vary; common options include “V=1” or “VERBOSE=1”.
    • Clean and build the project. Check that Build Configuration File is nonzero.
  • If Atlas’ code map is still empty, it may be that the Makefile is improperly reporting changing directories.
    • Right-click on the project in the package explorer and select Properties.
    • Select C/C++ Build and uncheck “Use default build command”.
    • Add the flag “--print-directory”.
    • Clean and build the project.



For versions of Atlas before Atlas 3.0, see the instructions at Configuring C Projects for Atlas 2.0.


If you experience difficulty in setting up Atlas, please contact [email protected] for assistance.