Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Language IDEs » C / C++ IDE (CDT) » Arduino Library Management With Symlinks(How is the library directory implemented, and is there a way to make the Arduino plugin access external libraries with symbolic links?)
Arduino Library Management With Symlinks [message #1775041] Tue, 24 October 2017 02:39 Go to next message
Isaac Rex is currently offline Isaac RexFriend
Messages: 2
Registered: October 2017
Junior Member
I have recently decided that I want to start developing for Arduino in a more complete IDE. I use Eclipse for my college Java class, and I have grown rather fond of it. I am using the CDT Arduino plugin, but I have a problem with managing my Arduino libraries. What I would ultimately like to do is maintain one libraries folder in my Arduino directory, and have Eclipse link to that same folder.

The Arduino plugin for Eclipse keeps its libraries in ~/.arduinocdt/libraries/, so I had the idea of creating a symbolic link in ~/.arduinocdt/ named "libraries" and linking it to my Arduino libraries directory. This does not work. Eclipse simply won't load the libraries if they're in the form of a symbolic link. I did find that it works if I hard link /Arduino/libraries/ to ~/.arduinocdt/libraries/, but it seems that hard linking directories is generally discouraged, and I would like to avoid this solution.

So my question is simply, is this possible? Can I maintain my libraries in /Arduino/libraries/ and have Eclipse refer to that folder? A solution that does work is to keep my "real" libraries folder in ~/.arduinocdt/libraries/ and symlink to that directory in /Arduino/libraries/ (the Arduino IDE is perfectly happy using a symlink) but I would really like to go the other way.

How To Use Custom or External Libraries
This is a decidedly unintuitive process, and there seems to be a lot of confusion on how to do it, so I thought I would share what worked for me.

I mentioned above that the Arduino Eclipse plugin keeps its libraries in ~/.arduinocdt/libraries/ (on Mac). Adding a library is almost as simple as copying the library folder in to that directory, just as you would for the Arduino IDE (if you have no libraries installed already, you will need to make the "libraries" folder).

The one extra thing you need is a "library.properties" file inside your library's folder. I've included the one I used for my Debounce library bellow to use as a template. Your final path should look something like ~/.arduinocdt/libraries/yourLibrary/ and inside this directory you will have your .h, .cpp, library.properties, and anything else your specific library may depend on.

Once you have your library in this directory, restart Eclipse and it should show up in the Arduino Downloads Manger. From here, you add them to your project as if they were a library you downloaded from the manager.

This is (more or less) what the contents of the library.properties file should look like. You can create it with any text editor.
name=Debounce
version=1.0
author=irex
maintainer=irex
sentence=Simple library to handle button debouncing
paragraph=This library supports debouncing of any number of buttons
category=Mechanical Input
url=*
architectures=*
Re: Arduino Library Management With Symlinks [message #1793043 is a reply to message #1775041] Mon, 30 July 2018 00:04 Go to previous messageGo to next message
Paulo Borges is currently offline Paulo BorgesFriend
Messages: 4
Registered: July 2018
Junior Member
Hi, I have followed your instructions carefully to:

How To Use Custom or External Libraries
Use custom Arduino libraries in Eclipse.

After I restart Eclipse the library I copied (unzip from Github) into the C:\Users\Eclipse\.arduinocdt\libraries in my case:
C:\Users\Eclipse\.arduinocdt\libraries\MemoryFree

and added the library.properties with the following content:

name=MemoryFree
version=1.0
author=Irex
maintainer=Irex
sentence=Arduino library MemoryFree
paragraph=Abstracts functionality Memory
category=Memory
url=*
architecture=*

The new library shows at the library download manager but when I #include <MemoryFree.h> on my code it reports unresolved include.

What I am doing wrong?

Thanks
Paulo
Re: Arduino Library Management With Symlinks [message #1793051 is a reply to message #1775041] Mon, 30 July 2018 09:54 Go to previous messageGo to next message
Paulo Borges is currently offline Paulo BorgesFriend
Messages: 4
Registered: July 2018
Junior Member
Just did a clean install of Eclipse Photon.
Same problem, Unresolved include.
See picture.

By the way, Windows locale settings are for Portuguese/Brazil

Thanks
Paulo

index.php/fa/33532/0/
Re: Arduino Library Management With Symlinks [message #1793134 is a reply to message #1793051] Tue, 31 July 2018 13:20 Go to previous messageGo to next message
Isaac Rex is currently offline Isaac RexFriend
Messages: 2
Registered: October 2017
Junior Member
It appears that you're doing it correctly. I haven't tried this on Photon yet; I've been using Oxygen. Is MemoryFree the only external library you've added? Can you try added a different one to see if it works?
Re: Arduino Library Management With Symlinks [message #1793178 is a reply to message #1793134] Wed, 01 August 2018 02:39 Go to previous messageGo to next message
Paulo Borges is currently offline Paulo BorgesFriend
Messages: 4
Registered: July 2018
Junior Member
Dear Isaac, thanks for the response.
I kept trying and found how to sort it out.
Indeed it is not intuitive at all.

What did I do:
Install Eclipse as per instructions in the following video (even if it is not Photon)
https://www.youtube.com/watch?v=TtPvkPpAx0E

Copy library folder to:
C:\Users\USERNAME\.arduinocdt\libraries
Library MUST include file library.properties as following example:

name=LibraryName
version=1.0
author=John_Smith
maintainer=Andrew_Smith
sentence=MemoryStatus
paragraph=MemoryStatus.
category=MemoryStatusurl=https://github.com/XXX/12345
architectures=*
includes=*

I used Windows Notepad and all the above appears in a single line, no spaces, no CR/LF at the end, replace example labels with proper from the library
(some libraries at Github include the library.properties file
To build your own try to look on built in library folder and see how the file library.properties looks.

Right click project, select properties/Libraries
Confirm (click) every library that must be included in the project

Regards
Paulo

[Updated on: Wed, 01 August 2018 02:40]

Report message to a moderator

Re: Arduino Library Management With Symlinks [message #1823042 is a reply to message #1793178] Wed, 18 March 2020 15:19 Go to previous message
Andrea Sperandio is currently offline Andrea SperandioFriend
Messages: 1
Registered: March 2020
Junior Member
I want to thank you in advance for your post.
I've just faced the same symlink problem in Windows and I've solved it this way:

go to ...\.arduinocdt\libraries and create a Junction:

mklink /J <Library_Name> <Library_Location>
Previous Topic:Where is C99 setting or build settings at all in Eclipse 2019-12 (4.14.0) CDT 9.9.0.201909091956
Next Topic:Build Output Parser - no rebuild
Goto Forum:
  


Current Time: Fri Apr 19 22:19:38 GMT 2024

Powered by FUDForum. Page generated in 0.03374 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top