Adding a local library

I'm banging my head against a wall, this seems like it should be easy but I can't make it work.

I have several sketches that share common code, I want to put that common code into a library. In my libraries directory I created a new folder, in that folder I put a .cpp file, a .h file and a library.properties file.

In the IDE (2.3.2), I went to Sketch->Include Library and under "contributed libraries" it shows my library. When I click on it, the IDE inserts a line into my .ino file, #include <library.h>.

So far, that all looks good. But when I go to compile the sketch, I get:

fatal error: No such file or directory

I feel like there's something simple I'm missing but I'm not getting it.

Thanks.

Hi @dccontrarian. I'm going to ask you to post the full verbose output from a compilation.


:exclamation: This procedure is not intended to solve the problem. The purpose is to gather more information.


Please do this:

  1. Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
    The "Preferences" dialog will open.
  2. Check the box next to "Show verbose output during: ☐ compilation" in the "Preferences" dialog.
  3. Click the "OK" button.
  4. Select Sketch > Verify/Compile from the Arduino IDE menus.
  5. Wait for the compilation to fail.
  6. You will see a "Compilation error: ..." notification at the bottom right corner of the Arduino IDE window. Click the "COPY ERROR MESSAGES" button on that notification.
  7. Open a forum reply here by clicking the "Reply" button.
  8. Click the <CODE/> icon on the post composer toolbar.
    This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
    Code block icon on toolbar
  9. Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
    This will paste the compilation output into the code block.
  10. Move the cursor outside of the code block markup before you add any additional text to your reply.
  11. Click the "Reply" button to post the output.

In case the output is longer than the forum software will allow to be added to a post, you can instead save it to a .txt file and then attach that file to a reply here:

  1. Open any text editor program.
  2. Paste the copied output into the text editor.
  3. Save the file in .txt format.
  4. Open a forum reply here by clicking the "Reply" button.
  5. Click the "Upload" icon (Upload icon) on the post composer toolbar:
    Upload icon on toolbar
    The "Open" dialog will open.
  6. Select the .txt file you saved from the "Open" dialog.
  7. Click the "Open" button.
    The dialog will close.
  8. Click the "Reply" button to publish the post.

Alternatively, instead of using the "Upload" icon on the post composer toolbar as described in steps (5) - (7) above, you can simply drag and drop the .txt file onto the post composer field to attach it.

OK, I got it working.

The include line comes from library.properties. The capitalization of the file has to match the actual file. If there is a src directory the compiler looks there first.

I had two versions of the file, one in the library directory, one in the src, the one in the library was properly capitalized but the one in src wasn't. Somehow that all confused the compiler.

Deleting the src directory fixed it.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.