LUFA Library  120730
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Exporting the Library for IDE Use

While LUFA was designed to allow for easy compilation in a makefile driven environment, it is possible to export the library into a form suitable for drop-in use inside of an IDE.

Exporting the Library

An export of the library is at its most basic, a direct copy of the main "LUFA" source folder from the root download folder; this contains the library core which can be re-used within external projects. However, as many IDEs attempt to automatically compile all included source files, it is neccesary to exclude some directories and files from the library core export to allow for easier integration into an IDE project.

Manual Export

To manually export the library core, copy over the main LUFA library folder from the LUFA root directory, renaming as desired. Within the library core folder, the following directories should be removed or excluded from your IDE import:

  • Documentation/
  • DoxygenPages/
  • CodeTemplates/

If required, files from the CodeTemplates/ subdirectory may be copied to your IDE project as needed.

The resulting copy of the library may then be imported into your chosen IDE according to the instructions shown in Importing the Library.

Automatic Export

If desired, the steps indicated in Manual Export may be automatically performed, by running the command make export_tar from the command line. This will generate two .tar files in the current directory, named LUFA_YYMMDD.tar and LUFA_YYMMDD_Code_Templates.tar (where "YYMMDD" is the version of the library being exported). The first archive contains the exported LUFA core with the non-required files removed, while the second contains an archived copy of the code template files for the current LUFA version.

The resulting archived copy of the library may then be extracted to your chosen IDE project source directory and imported according to the instructions shown in Importing the Library.

Importing the Library

An exported copy of the library may be imported wholesale into an IDE project, if the instructions detailed in Exporting the Library are followed.

Specific instructions for importing an exported version of LUFA into various IDEs are listed below.

Importing into AVRStudio 5/Atmel Studio 6

To import LUFA into a new or existing project, the following steps must be followed.

Copy over the exported library

Copy over the exported library archive created via the steps listed in Exporting the Library to your AS5/AS6 project directory.


Extract exported library

Extract out the contents of the archive to a new folder. This may be any name you wish, however keep in mind that this name will need to be referenced within your user application under most circumstances. It is suggested that this folder be named "LUFA", or "LUFA" followed by the version string for easy reference.


Add the library files

Open your AVRStudio 5/Atmel Studio 6 project. From the "Solution Explorer" pane, click the "Show All Files" button on the toolbar to display ghosted icons of files and folders located in the project source directory that are not currently added to the project.


Right-click the ghosted version of the extracted LUFA export folder in the Solution Explorer pane, and choose the "Add to Project" option from the context menu. This will add the entire LUFA source tree to the current project.

Open Project Toolchain Properties

In the Solution Explorer pane, click the project node, and press the "Properties" button in the toolbar to open the Project Properties window. This window allows you to configure the various project global compiler, assembler and linker options.


Click the "Toolchain" tab on the left side of the Project Properties window.

Configure Project Toolchain Properties

In the GNU C Compiler section, open the "Symbols" page. Click the "Add Item" button to the top-right of the "Defined Symbols" section to add new symbols.

At a minimum, you will need to define the following symbols (for more information on these symbols, see Configuring the Demos, Bootloaders and Projects):

  • ARCH
  • F_CPU
  • F_USB

Next, open the GNU C Compiler section's "Optimization" page. Ensure that the option to prepare functions for garbage collection is enabled.


Finally, in the GNU C Linker section, open the "Optimization" page. Ensure that the option to garbage collect unused sections is selected.